{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 第三阶段 - 第1讲：数据分析总流程\n",
    "\n",
    "## 学习目标\n",
    "- 理解数据分析的完整流程\n",
    "- 掌握问题定义的方法\n",
    "- 识别常见的脏数据类型\n",
    "- 建立数据质量意识\n",
    "\n",
    "---"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 一、数据分析六步法\n",
    "\n",
    "### 完整流程图解\n",
    "\n",
    "```\n",
    "问题定义 → 数据采集 → 数据准备 → 数据分析 → 可视化呈现 → 决策建议\n",
    "   ↓          ↓          ↓          ↓           ↓           ↓\n",
    " 明确目标   获取数据   清洗整理   统计建模    图表展示    业务洞察\n",
    "```\n",
    "\n",
    "### 详细说明\n",
    "\n",
    "#### 1️⃣ 问题定义 (Define the Problem)\n",
    "**核心**: 明确分析目标和业务问题\n",
    "\n",
    "**关键问题**:\n",
    "- 要解决什么业务问题？\n",
    "- 需要什么数据来回答这个问题？\n",
    "- 预期的决策或行动是什么？\n",
    "- 成功的标准是什么？\n",
    "\n",
    "**案例示例**:\n",
    "- ❌ 不好的问题：\"分析一下销售数据\"\n",
    "- ✅ 好的问题：\"为什么Q2销售额同比下降15%？哪些产品/地区下降最严重？\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "✅ 环境配置完成\n",
      "Pandas版本: 2.2.3\n",
      "Numpy版本: 2.2.5\n"
     ]
    }
   ],
   "source": [
    "# 导入基础库\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "import warnings\n",
    "warnings.filterwarnings('ignore')\n",
    "\n",
    "# 设置中文显示\n",
    "plt.rcParams['font.sans-serif'] = ['Arial Unicode MS', 'SimHei']\n",
    "plt.rcParams['axes.unicode_minus'] = False\n",
    "\n",
    "print(\"✅ 环境配置完成\")\n",
    "print(f\"Pandas版本: {pd.__version__}\")\n",
    "print(f\"Numpy版本: {np.__version__}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 2️⃣ 数据采集 (Data Collection)\n",
    "**核心**: 获取相关数据源\n",
    "\n",
    "**常见数据源**:\n",
    "- 数据库 (MySQL, PostgreSQL, MongoDB)\n",
    "- Excel/CSV文件\n",
    "- API接口\n",
    "- 网页爬虫\n",
    "- 日志文件\n",
    "- 第三方平台导出\n",
    "\n",
    "**数据量级评估**:\n",
    "- 小数据 (<1GB): Excel + Pandas\n",
    "- 中等数据 (1-10GB): Pandas + 分块处理\n",
    "- 大数据 (>10GB): Spark, Dask, 数据库"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "销售数据示例:\n",
      "  order_id        date      product  amount region\n",
      "0   ORD001  2024-01-15    iPhone 15    6999     华东\n",
      "1   ORD002  2024-01-16  MacBook Pro   12999     华北\n",
      "2   ORD003  2024-01-17     iPad Air    4999     华南\n",
      "3   ORD004  2024-01-18    iPhone 15    6999     华东\n",
      "4   ORD005  2024-01-19  AirPods Pro    1999     华中\n",
      "\n",
      "数据规模: 5行 × 5列\n",
      "内存占用: 1.35 KB\n"
     ]
    }
   ],
   "source": [
    "# 模拟不同来源的数据采集\n",
    "\n",
    "# 场景1: 从CSV读取销售数据\n",
    "sales_data = {\n",
    "    'order_id': ['ORD001', 'ORD002', 'ORD003', 'ORD004', 'ORD005'],\n",
    "    'date': ['2024-01-15', '2024-01-16', '2024-01-17', '2024-01-18', '2024-01-19'],\n",
    "    'product': ['iPhone 15', 'MacBook Pro', 'iPad Air', 'iPhone 15', 'AirPods Pro'],\n",
    "    'amount': [6999, 12999, 4999, 6999, 1999],\n",
    "    'region': ['华东', '华北', '华南', '华东', '华中']\n",
    "}\n",
    "df_sales = pd.DataFrame(sales_data)\n",
    "\n",
    "print(\"销售数据示例:\")\n",
    "print(df_sales)\n",
    "print(f\"\\n数据规模: {len(df_sales)}行 × {len(df_sales.columns)}列\")\n",
    "print(f\"内存占用: {df_sales.memory_usage(deep=True).sum() / 1024:.2f} KB\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 3️⃣ 数据准备 (Data Preparation)\n",
    "**核心**: 清洗和整理数据，确保数据质量\n",
    "\n",
    "**主要任务**:\n",
    "- 缺失值处理\n",
    "- 异常值检测与处理\n",
    "- 重复值去除\n",
    "- 数据类型转换\n",
    "- 格式统一\n",
    "- 数据合并与拼接\n",
    "\n",
    "**时间占比**: 通常占据整个分析工作的 **60-70%**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 4️⃣ 数据分析 (Data Analysis)\n",
    "**核心**: 统计分析和模型构建\n",
    "\n",
    "**分析方法**:\n",
    "- **描述性分析**: 均值、中位数、标准差、分布\n",
    "- **诊断性分析**: 为什么会这样？相关性、因果关系\n",
    "- **预测性分析**: 未来会怎样？回归、时间序列\n",
    "- **指导性分析**: 应该怎么做？优化、决策模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "=== 基础统计分析 ===\n",
      "总销售额: ¥33,995\n",
      "平均客单价: ¥6,799.00\n",
      "订单数量: 5\n",
      "\n",
      "=== 产品销量排名 ===\n",
      "              总销售额  订单数\n",
      "product                \n",
      "iPhone 15    13998    2\n",
      "MacBook Pro  12999    1\n",
      "iPad Air      4999    1\n",
      "AirPods Pro   1999    1\n",
      "\n",
      "=== 地区分布 ===\n",
      "region\n",
      "华东    13998\n",
      "华北    12999\n",
      "华南     4999\n",
      "华中     1999\n",
      "Name: amount, dtype: int64\n"
     ]
    }
   ],
   "source": [
    "# 简单分析示例\n",
    "print(\"=== 基础统计分析 ===\")\n",
    "print(f\"总销售额: ¥{df_sales['amount'].sum():,}\")\n",
    "print(f\"平均客单价: ¥{df_sales['amount'].mean():,.2f}\")\n",
    "print(f\"订单数量: {len(df_sales)}\")\n",
    "\n",
    "print(\"\\n=== 产品销量排名 ===\")\n",
    "product_sales = df_sales.groupby('product')['amount'].agg(['sum', 'count'])\n",
    "product_sales.columns = ['总销售额', '订单数']\n",
    "print(product_sales.sort_values('总销售额', ascending=False))\n",
    "\n",
    "print(\"\\n=== 地区分布 ===\")\n",
    "region_sales = df_sales.groupby('region')['amount'].sum().sort_values(ascending=False)\n",
    "print(region_sales)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 5️⃣ 可视化呈现 (Visualization)\n",
    "**核心**: 用图表讲故事\n",
    "\n",
    "**常用图表**:\n",
    "- 对比: 柱状图、条形图\n",
    "- 趋势: 折线图、面积图\n",
    "- 占比: 饼图、环形图、树状图\n",
    "- 分布: 直方图、箱线图、小提琴图\n",
    "- 关系: 散点图、热力图、气泡图\n",
    "\n",
    "**可视化原则**:\n",
    "- 简洁明了，一图一主题\n",
    "- 突出重点数据\n",
    "- 选择合适的配色\n",
    "- 添加清晰的标题和标签"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABNcAAAHqCAYAAAAnN6jwAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAu8pJREFUeJzs3Xd4VHXaxvHvJIH0ShJaqAFpgUUQRGkBBERWUVBprgUVFcQVbLggAoodVFAsIEUEgaXoKihIFxRBWCABpbeEGkjvyZz3j7yZdUgCScjkpNyf65rLnVPvM5zNnDz5FYthGAYiIiIiIiIiIiJSZE5mBxARERERERERESmvVFwTEREREREREREpJhXXREREREREREREiknFNRERERERERERkWJScU1ERERERERERKSYVFwTEREREREREREpJhXXREREREREREREiknFNRERERERERERkWJScU1ERERERERERKSYVFwTkTJt4sSJWCyWPK+qVatSo0YN+vbty5YtW0o1k8ViITw83OHnOX36NElJSYXa9tChQzzyyCPUq1ePqlWr4uXlRZs2bXjttddITEwsdobcz3/Tpk3FPsb1Onr0KE8//TRNmjTBw8ODwMBAOnTowEcffURqaqppuUrbiRMnsFgsPPzww2ZHERERuS4FPd9ZLBbc3d1p1KgRY8aMISEhweFZNm3ahMViYeLEiQ4/V2EV5fkrPT2dd955hzZt2uDl5YWrqyv169fnwQcfZM+ePcXOYOZzR3h4eJ77wsXFhYCAAG6++Wbee+890tPT8+x3Pc/ohX3uzu9zqV+/PvXr1y/Wea9l//79du8deS65Pi5mBxARKYzhw4fTuXNn2/uMjAxOnz7Np59+Svfu3fnmm2/4+9//bmLCkjVnzhyefvppDhw4gJeX11W33bp1K7179yYgIIChQ4cSGhpKQkICGzduZMKECcyfP5+ff/6ZmjVrllL6kjN79mxGjBhBtWrVGDJkCE2bNiUhIYE1a9YwatQoZs2axbp16wgKCjI7qsMFBQWxYMECQkNDzY4iIiJSIq58vjMMg+joaJYtW8b777/Pb7/9xs8//4yTk+PahDRr1owFCxbQqlUrh53DUVJTU+nWrRu7d+/m3nvv5eGHH8bV1ZU//viDuXPnsmjRIhYsWMDgwYPNjlos77//PoGBgQBYrVYuX77M6tWreeGFF1i2bBnr1q2ze05esGAB1atXL/J5ivLcXZrPY0888QRr167l+PHjtmUffPCBw88rxWSIiJRhr776qgEYc+fOzXf97t27DcBo1qxZqWUCjK5duzr0HA899JABGMePH7/mtk2bNjVCQkKMS5cu5Vn39ttvG4AxbNiwYuXI/fw3btxYrP2vx4oVKwyLxWKEh4cb8fHxeda///77BmB069at1LOJiIhI8V3r+S4rK8vo0qWLARjLli0r3XBlQGGfv958800DMJYuXZpn3aFDhwwfHx/D29vbSEpKKnKG48ePG4Dx0EMPFXnf69W1a9erPge/++67BmA88sgjJXK+ojx356devXpGvXr1SiRLaRxXHEPdQkWkXLvxxhtp0aIFf/zxB7GxsWbHKXUXLlzgzz//pF27dgQEBORZ/8wzz+Dq6sqvv/5qQrriy8jI4JlnnsHb25slS5bg4+OTZ5tnn32Wzp07s2nTJv773/+akFJEREQcwdnZmSeeeAKg1If/KE9yP5vevXvnWde4cWPuvvtukpOTiYiIKO1oDvX8889z6623Mm/ePI4dO2Z2HBFAY66JSAWQ21UgKysLyBmnoWnTpnz55ZfUrFkTf39/3nzzTQCys7P58MMPad26Ne7u7vj6+tKjRw9+/PHHPMc9f/48jz76KNWrV8fd3Z1bb72V3377Lc92Dz/8MBaLhRMnTtgtL2isiqNHj/KPf/yDmjVr4uHhQfPmzXn77bfJyMgAcsZSmD9/PgANGjS46tgR7u7uODs7s2nTpnzH1XBzc+Py5cscOHDAbvmlS5cYN24czZs3x8fHBy8vL5o3b86UKVPIzs4u8Hy55syZQ7t27fD09MTPz4+ePXuybt26PNvNmjWLG2+8EW9vbwICArjllltYtGjRNY+/bt06oqKiGDRoEMHBwQVut3DhQi5evMiNN95oW5aSksLEiRNp2rQprq6uVKtWjbvuuivPv93DDz+Ml5cXR48epV+/fvj4+ODj48Ndd93F6dOnOXbsGHfffTc+Pj4EBQVx//33c/bsWdv+uWO0LFq0iBdffJGaNWvi7u5OmzZtWLJkSZ6sp06d4plnnqFx48Z4eHjg6+vLjTfeyCeffJInl5ubGz/++CMNGzbE29ubkSNH5ns/nT9/nhEjRtCgQQPc3NyoU6cOQ4YM4c8//8xz/i+//JJbbrkFT09PPD098/23yL2mJUuW8NZbb9GoUSNcXV1p0KAB48ePJzMzs8B/CxERkZKU+4c1Fxf7kYxOnjzJww8/TM2aNXF1dSU0NJSXXnop3/HZZs2aRatWrXBzcyMkJIRx48YxZ84cu/HMChpzbdWqVfTo0QMfHx/c3d1p3bo1M2bMwGq12rbJ/W5+7733mDVrFmFhYbi6ulK7dm2efvrpPOPeXu/z15VyuzB++OGHGIaRZ/3nn39OZmYmHTp0sFu+aNEiwsPDqVGjBq6urtSqVYshQ4bYdT8sSEREBAMGDCAoKAg3NzdatGjBG2+8kWcMtD179nD33XfbnncbNWrECy+8QHx8fJGvMz//+Mc/MAyD5cuX25ZdOeZaYmIi//rXv2jcuDHu7u7UrFkzzzNhQc/dRXkey/XTTz9x44032u630aNH290DV9v3r79P5G538uRJTp48aXd/5jfm2qlTp3j88ccJCQmhatWq1KlThyeeeILo6Gi77cLDwwkLCyMyMpK+ffva7sFevXqxY8eOQnzqcjUac01EyrXjx49z8OBB6tWrZzfuVlRUFM888wwvvvgiFouFDh06kJWVxV133cUPP/xAt27deOutt0hMTGTevHn06dOH9957j+eeew6A+Ph4OnXqxPHjx3niiSdo3bo1v/32W75/GSyKiIgIOnbsCMBTTz1FaGgomzZtYuzYsezatYulS5fywQcfMG3aNH7++Wfef/99WrRoUeDxvL29uf/++/n6669p06YNnTp1onfv3nTt2pX27dtTtWpVPDw87PZJTEwkPDycI0eO8NRTT9GiRQuSkpL48ssvGT9+PGlpabz22msFnvO5555j2rRpdOrUiddff91WjOnZsydffPEFw4YNA+C9997jhRdeYODAgTz11FNkZGSwYMEChg4dSkZGxlUHyN2+fTsAnTp1uurnWadOHbv3SUlJdO3ald27d3PPPfcwatQozp8/z2effUanTp346quvGDhwoG37zMxMunbtSocOHXjnnXfYvXs3s2bNIioqivPnz9OpUyfeffdddu3axaxZs0hMTOSHH36wO+e4cePIzs5mzJgxWCwW5syZw6BBg4iLi7P91T0qKopbb72V1NRUnnzySRo1akRMTAyff/45I0aMoGrVqjz66KN2uQYPHsxTTz1FUFAQISEhea49OzubXr16cfr0aUaOHEmDBg04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bN04c7+r0tLS8v2D63/+8x8CAwOBnD/wARw4cMD2XZzrWt+9f/3evLJ1+vHjx0lMTCzW9+b1PH/lJysri7feeos777wzT3Et15XPgMuWLWPDhg08+uijzJ49227badOmXfV8uc+AFoslz+dvGAZLly61ff5RUVEcPnyYbt268eyzz/Lss89itVp55513ePnll5k9e/Y1z3c1hmGwaNEinJ2dC3z+TUpKYv/+/dSpU4f77ruP++67D8h55u7RowfvvvtuoYprhZXbau+vzpw5Q3x8vO3ZvqDfGXK3Larc30f279+f7/p9+/ZhsVjyzC4qjqEx10Sk0sj98p0wYYLd8rS0NKZOnYqzszN33XUXkDN+RXx8fJ5m7++//36evyzlFupyCxW55s2bZ/c+KCiILl26sGbNGiIjI+3WffrppyxevNj2UJL7EHStv2INHDgQZ2dnXnrpJU6fPp1nfUJCAl9++SUBAQG2qcVzx+Zq1KiR3bZvv/02hmFc9Zz33nsvAJMmTbIbDy07O5snnniCe+65h7i4OKxWK+Hh4QwdOtTueMHBwbbzXu2vZk5OTrz99tvEx8dz//3327pM/NW0adNYu3YtHTt25I477gBy/o2TkpJ455137La9dOkSn3zyCb6+vkUqXhbG7Nmz7aaVj4+PZ+bMmQQFBdkePs+fP4+bm1ueou5bb70FFO+vlevWraNz587MmjXLbnm7du2oUqWK7fPNve8nTZpkdx6r1WobO6agB1MREZHS5ufnx/z583FycuLpp5+2Pd8EBwfTpUsXVq9ebZtVPNfGjRvp16+fbYzZAQMG4OLiwocffkhGRoZtu+joaBYuXHjV8/fr1w8nJyfeeustUlJS7Na9/vrrQPG+N6/n+Ss/9evX59Zbb+X7779n0aJF+W6TOxv4gAED7DLkFspy7d+/n++++w4o+JmkTZs2NGzYkHnz5tmGvcg1f/58Bg0axLJlywB488036d69u611GeQ82918883A9beceuONN9i9ezePP/54gbNb/vHHH3To0IEpU6bYLW/RogW+vr52GQr73H010dHRLF682G5Z7rnvv/9+IGcMWzc3NyIjIzEMw7bdkSNH2LZtW55juri4XDVT9erV6dixI+vWrWPz5s1263JbCnbt2tWud4s4jlquiUil8fDDD7Ns2TLmzJnDyZMnueuuuzAMg3nz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CxcuNN5///0851u3bp0RGhpqVK1a1Rg+fLjtXPXq1bM75qlTp4zhw4cbtWvXNlxcXGz3VnR0dL6f65Wu9vwnhWcxjL+0RxQREZFC2bRpE926dePVV19l4sSJZscRERGR/5eSkkJWVlae3gYAjzzyiK1r49VmnRcRKQqNuSYiIiIiIiIVxoEDB/D19eXVV1+1Wx4fH8+aNWuoUaOGBnkXkRKlMddERERERESkwrjxxhtp2bIlb775JvHx8bRs2ZJLly4xd+5czp07x5dfflngmGsiIsWh4pqIiIiIiIhUGM7Ozqxfv5533nmHb775hs8++wwvLy/atWvHjBkzbLN5i4iUFI25JiIiIiIiIiIiUkwac01ERERERERERKSYVFwTEREREREREREpJo25VgRWq5UzZ87g7e2tATBFRERExOEMwyAxMZFatWrh5KS/i4uIiJRFKq4VwZkzZ6hTp47ZMURERESkkjl9+jQhISFmxxAREZF8qLhWBN7e3kDOw42Pj4/JaURERESkoktISKBOnTq251AREREpe1RcK4LcrqA+Pj4qromIiIhIqdGQJCIiImWXBm4QEREREREREREpJhXXREREREREREREiknFNRERERERERERkWJScU1ERERERERERKSYVFwTEREREREREREpJhXXREREREREREREiknFNRERERERERERkWJScU1ERERERERERKSYVFwTEREREREREREpJhXXREREREREREREisn04lpMTAwNGzZk06ZNedYlJSVxww03MHHiRLvl8+fPp2HDhnh4eNCmTRu2bdtmW5ednc3zzz9PUFAQ3t7e3HnnnZw5c8a2/sKFC/Tv3x9vb28CAwN55plnyMzMdNTliYiIiIiIiIhIBWZqcW3btm3ceuutHD9+PN/1Tz75JMeOHbNbtnnzZkaOHMns2bNJTEzkkUceoW/fvly6dAmAKVOmsGrVKnbu3Mn58+fx8fFh4MCBtv0HDRqEi4sLZ86cYe/evWzYsIHJkyc77iJFRERERERERKTCMq24Nm/ePIYMGcKbb76Z7/ovvviCc+fOceutt9otnz17NoMHD6Z79+44OzszatQogoKCWLlyJQCzZs1i/Pjx1K9fHw8PD95++222bt3KkSNHOHr0KBs3bmTatGl4e3tTu3Ztxo4dy9y5cx1+vSIiIiIiIiIiUvGYVly7/fbbOXr0KAMGDMiz7sCBA7z22mssWLAAJyf7iBEREbRq1cpuWcuWLYmMjCQuLo6oqCi79SEhIfj7+xMZGUlERAQBAQGEhITY1rdq1Yro6Gji4uJK9gJFRERERERERKTCczHrxDVq1Mh3eWpqKoMGDWLmzJnUrFkzz/rExEQ8PT3tlnl6epKUlERiYqLtfX7rDcPIdx3kjO/m5+dnty49PZ309HTb+4SEBACsVitWq7UQV1myTp8+TUxMTKmfV8qGwMBA6tSpY3YMERERKUVmPHOKiIhI0ZhWXCvIqFGjuO2227jjjjvyXe/t7U1ycrLdsuTkZAIDA/H29ra9v3K9t7c3hmHkuy73uFd68803mTRpUp7lFy9eJC0trfAXVQIuXrzIk0+NIDMj/dobS4VUpaorn34yk6CgILOjiIiISCnJ/eOxiIiIlF1lrri2cOFCqlatypw5c4CcFmXbt29nxYoV7Nu3jxYtWhAREWG3z759++jbty9+fn7UqlWLiIgIWrZsCUBUVBSxsbGEhYVhtVq5fPky0dHR1K5d27ZvSEgIvr6+ebK8/PLLjBkzxvY+ISGBOnXqEBQUhI+Pj6M+gnxFR0ez/ddfaNl/NB5Bar1U2aRcPM2uFe+TkZFBcHCw2XFERESklLi5uZkdQURERK6hzBXXUlNT7d6Hh4cTHh7OxIkTARg2bBh33303w4YNo23btnz44YdcvnyZ/v3729a/9dZbdOvWDU9PT0aPHk14eDihoaEAdOrUibFjx/L5559z7tw5Xn/9dR577LF8s7i6uuLq6ppnuZOTU56x4BzNYrFgtVpxD6yDd81GpXpuMZ9h5HQLsVgspX7viYiIiHn0vS8iIlL2lbtv6x49ejB16lQGDRqEj48PS5Ys4YcffsDf3x+ACRMmEB4eTlhYGLVq1SIzM5PFixfb9l+yZAlxcXEEBwdz0003cccddzBu3DizLkdERERERERERMoxi2EYhtkhyouEhAR8fX2Jj48v9W6hu3fvpm3btnR48gN8aqnlWmWTcOYI2z99ll27dtGmTRuz44iIiEgpMfP5U0RERAqn3LVcExERERERERERKStUXBMRERERERERESkmFddERERERERERESKScU1ERERERERERGRYlJxTUREREREREREpJhUXBMRERERERERESkmFddERERERERERESKScU1ERERERERERGRYlJxTURERERERETEwQzD4LbbbuPy5csAPP3003z00UeF3v/pp5/mrbfeclQ8uQ4qromIiIiIiIiIONjatWs5d+4cAQEBdssTEhJ44IEHSEpKsi3LysrK8zIMA6vVmu86MZeL2QFERERERERERCoyq9XKuHHjGDlypN3yxMRE+vXrR7NmzfDy8gLgyJEjNG7cuMBjjRs3Ls8ywzBKNrAUiVquiYiIiIiIiIg40Pvvv8+uXbto0KCBbZlhGEycOJGQkBBmzJhhW96oUSMMwyAzM9PuNWLECKZMmZJnuQpr5lPLNRERERERERERB1m6dClTpkyhdu3aAMTFxTFt2jTmzJnD0KFD+eKLL7BYLHb7bN++nVtuuSXf413Zcu3ixYsEBgY6JrwUilquiYiIiIiIiIg4wNKlS3n88cdZsmQJISEhbN++nbp16/L777/TvXt32rRpYyusLVq0iJUrV9r2bdGiBYZh8OCDDzJ9+nQMw8AwDIYNG8aiRYswDANXV1ezLk3+Qi3XRERERERERATS0yEtDVJTc/6b+0pPB6sVDON//zUMCHED57ScfS1OgAWcq4Bz1YJfLm7gVHlKEX379mXXrl00atSIV155hZtvvplt27bRvHlzJk2axG+//Yafnx8An376KW+88UaeY7z55puEhYXRuXNn0tLS+Pbbb3nttddK+UrkairPHS0iIiIiIiJSWaWkQGxszishIef9XwtoaWk5hbOi8AuGzAtFz+LsClW9oKrn///3ry/vnOUVhKenJ40aNQKgWbNm+Pn50bJlS8LCwvj00085ffo0ycnJAIwfP54uXbrY7f/jjz/y/PPP4+TkxAMPPMDp06exWCz06tWLBQsWlPr1SP5UXBMRERERERGpKJKS/ldEi4v733/T081O9j/Z6ZCaDqmX8l/vVAXcA8Dd////+/8vF7fSzVkCVqxYwYABA2zv582bZ/vfnTt3zrN9165d2bRpk+19x44dWbZsGQCvv/46vXv35vHHHwegXr16jgktRabimoiIiIiIiEh5lJAAZ8/CuXNw+XJOES0z0+xU18+aCcnnc15/VcUjp8jmEQheNXJezlXNyVhI/fv3z3c2z7CwML766itat2591f1ffvllPv74Y7tl06ZNA1DX0DJExTURERERERGR8iAhAc6cySmonT2b00qtMslMyXklRP3/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3LYiV65NmzaNadOm/e799913HwcOHPjd+x999FEeffTR37zP3d2dWbNmMWvWrL+dU0REREREROSv8vGA5uVz389fz102uvc0XLoDW6NlWzVz7c+44UY5yhFJJOUohxtuRkeSYqzIlWsiIiIiIiIiziykBHSpBjFRcOwyHLoA3yVB4lX4u+eie1iySTVfLZCczsaEiTDCiCSSilTEAw+jI4mTULkmIiIiIiIiYgCTKfek0ciA3LLtWkZuyfbdBfg+CVKzbv9zlgu5hN30dys65+GNN+GEE/G/Ny+8jI4kTkjlmoiIiIiIiEgR4GeFeyJy32323L3ZvruQO7Pt1F+c1RYUfJF8dHJOw4KFUEIdhVoAAUZHEhegck1ERERERERcht1up23btqxYsYKAgABGjBhBtWrVGDFixF/6+GrVqjF79mxatWp1R3OaTVDZP/e9cxSk/GJW2+FkSMn87Y/z9ruIqy0KDSKICCIIJ5wylNH+aVLoVK6JiIiIiIiIy9i8eTPnzp0jIODmGU3Xrl1j2LBhzJ07lxIlSvzh53BzK/zyxtcKTSJy3wGSb8DJK3Dyau77qatwIwvwct7DDEyY8MefIIIIJNDxT+2dJkZTuSYiIiIiIiIuwWazMX78eIYPH37T9ZSUFGJiYqhevfqfFmsAZrP5TkX8y4K8c98bhOXettsh6QakmO/iMklc4hKXucw1rmH/28ckFD433Aj831vQ/9788ceiGkOKII1KERERERERcQlvvPEG+/fvZ9q0aY5rdrudKVOm0KtXL95+++2bHr906VL69+9/y+dp1qzZTbebN2/Otm3b7kjmv8pkgtI+UJryQHnH9WyyucIVUkgh9Vdv17nODW6QQ06h53XHnRKUwAcfSvzOmxnjS0yRv0LlmoiIiIiIiDi9FStW8NJLLxEeHg7AlStXmDlzJgsXLqRv374sWLAAk8l0y8e1atWKTZs2OW7XqlWLd955h+bNmzs+77x58wrnm8gHCxbHzK/fYsdOOuk3lW2ZZJJDDtlk/+k/zZix/OrNHfdbrlmw4IWXozizYi3kfxMid47KNREREREREXFqK1as4JFHHmHlypVMnDiRPXv20KtXL5o2bUqrVq2oX7++o1iLi4vDy8uLrl27AmAymbBYbn7p7Obm5rhWFJaI/h0mTHj97+33CjgR+WPF+1lARERERERE5E907NiR/fv307ZtWwAaN27Mzp07Wb9+PQ0aNGDv3r0sXbqUpUuXMnv2bAIDAw1OLCLFiWauiYiIiIiIiFPz8fEhMjISgOrVq1OqVClq165NrVq1mDt3LomJiaSmpgIwYcKEm/ZU27Jlyy3LRVu2bHnT7bwloiLimlSuiYiIiIiIiFNbvXo13bt3d9xevHix48/R0dG3PP6XBxQ0a9aMLVu2OO4rbnuuicidp3JNREREREREnFq3bt2w2+23XK9VqxZLly7lrrvu+s2P69y5M82bN//DPde6du3qWG4qIq5J5ZqIiIiIiIjIb/Dz88PPz+8PH+Pl5YWXl1chJRKRokgHGoiIiIiIiIiIiOSTyjUREREREREREZF80rJQERERERERcUmHDh267Y85cuTIHUgiIsWZZq6JiIiIiIiIiIjkk8o1ERERERERERGRfFK5JiIiIiIiIiIikk8q10RERERERERERPJJ5ZqIiIiIiIiIiEg+qVwTERERERERERHJJ5VrIiIiIiIiIiIi+aRyTUREREREREREJJ9UromIiIiIiIiIiOSTyjUREREREREREZF8UrkmIiIiIiIiIiKSTyrXRERERERERERE8knlmoiIiIiIiIiISD6pXBMREREREREREcknlWsiIiIiIiIiIiL5pHJNREREREREREQkn1SuiYiIiIiIiIiI5JPKNRERERERERERkXxSuSYiIiIiIiIiIpJPKtdERERERERERETySeWaiIiIiIiIiIhIPqlcExERERERERERySeVayIiIiIiIiIiIvnkkuXahQsX6NatG76+vgQFBfHkk0+SlZVldCwRERERERERESlmXLJci42NxWKxcObMGRISEti6dSsvvPCC0bFERERERERERKSYcbly7dixY3zxxRfMnDkTX19fwsPDef7551m0aJHR0UREREREREREpJhxuXLt4MGDBAQEEBER4bhWp04dTp8+zZUrV4wLJiIiIiIiIiIixY7F6ACFLSUlBR8fn5uu5d2+fv06pUqVclzPyMggIyPDcfvq1asAXLlyBZvNdufD/kJKSgomk4nrZ4+Sk5VeqF9bjJeW/DMmk4mUlBTDSmCNQddm9BjU+BONQTGSkePv2rVrANjt9kL9uiIiIvLXmewu9jf12rVrGTx4MBcvXnRc+/bbb6lbty5XrlyhZMmSjutTpkxh6tSp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dm2DU4uz+OXhLb179+b69et89dVXjBgxgurVq/PAAw/w1FNPERcXR0hICB9//DFbtmwhMDDQ6OgiIiIiApjsWksg/2O329m1axdms5l77rmH9evXM27cOGJjYxk/fjwAixYtYtasWWzatInSpUsbnFichd1ux2QyOWYFlSpViuTkZK5fv07z5s3p0KED//nPf3jjjTeoU6eO46CNvNlEIn/H4sWLGThwIFlZWXTu3JkbN24wZMgQxo0bx7Bhwxg7diyQW8DpNGS5U+x2O/fccw9Vq1Zl6NCh/Pe//+WNN96gSZMmDBw4kLS0NNavX0/58uVp37491apVMzqyiIiIiPyPyjUXl5CQ4NhPqH79+mRmZvL9998zceJEnn76aebPn8/s2bPx8PCgRo0a7N+/nzVr1mgZlNwRDz30EGazmcWLFwOwYsUK5s+fz1133cVrr73Gjz/+SEBAAG5ubjpEQwrErl27ePnll1m7di1ubm5kZmYSExPDpk2beOihhxxjMW9mpcidsnbtWt5++222bNniuLZjxw569erF1KlTefTRRw1MJyIiIiJ/RL+Cd2EzZ85kxIgRbNy4kUcffZRGjRqxbds24uLieO2113jjjTd44okn2Lx5M4MHD6Z///5s27ZNxZoUOJvNRmpqKmfPnqVPnz6O67169aJz58689957nD17lqpVqxIUFKRiTQrMvffey/r16+nVqxePP/44Hh4efPzxxzzwwAOcPHmS+Ph4MjIyVKxJgfvhhx84deoUly5dAnJPBk1LSyMrK4uMjAyys7OJjo6mdevWN+0DKCIiIiJFj8o1F9ahQwd8fX2ZP38+x48fZ9KkSQQFBREbG8vKlSt55ZVXmDRpEpGRkTz77LN07dqVihUrGh1bnMSxY8c4dOgQAGazmRs3bpCamsrp06eB3JlCADExMdSsWVPlhtxRXbt2ZfHixYwbNw53d3dWrlyJ1Wpl6tSpxMfH/+ZhGyL59fDDDzNgwADq1avH2LFjSU5OJiQkhP3797N3716sVqtjH9QSJUpQq1YtgxOLiIiIyB9RueaCvvjiC+Lj4/Hx8WHJkiVkZ2ezZcsW1q5d63hMx44dWbduHa+//joTJ040Lqw4pT59+hAbG0vLli0dG8UHBwdTt25dxo8fz/fff+947KpVq7DZbFitVqPiigvo168fy5YtY/r06YwdOxYPDw/Wr19PdnY2s2bNIiMjw+iI4iRiYmI4cuQIK1as4LnnnmPdunUcOHCAVq1aMXToUNq0acOHH37Ijh07mDNnDmvWrKFLly5GxxYRERGRP6A911xM7969OXr0KCdOnKBixYrMnz+f0qVLM2TIENzd3Xnsscf4xz/+4Xh8fHw8ERER2jhZCkxMTAxJSUksW7aM8+fPM3ToUF588UU6deoE5I7RL774gsaNGxMSEsL69evZtGkTd911l7HBxSWsXr2a2NhYnnvuOaZNm0ZWVhZnz56lXLlyRkcTJxATE0NycjI7d+50XGvQoAGjRo2ib9++pKenM336dObPn09ERASenp5Mnz5dz38iIiIiRZzKNRfSpUsXzp8/z44dO9i1axfDhw+nR48eTJ48mR9++IGnnnoKq9XKY489RocOHYyOK06oe/funD9/ni+//NJxLTY2lqCgILy9valfvz6xsbEsWrSIkydP4ufnR6dOnahSpYqBqcXVrF27lm7dujFlyhQmTZpkdBxxEp06deL8+fPs27fPce27776jd+/evPvuu9x3332O64mJiZQqVQq73Y6fn58RcUVERETkNmgTIxfRpUsXkpOT2b17NwDNmjWjbt265HWrUVFRvPXWW4waNYrXX38di8VC27ZtjYwsTubJJ5/ks88+48cff3RcS0xMZMWKFXTp0oXDhw+zZs0avLy8GDRokIFJxdV16dKFdevWERkZaXQUcRJJSUls3LiRPn36kJaWhpeXFydPnqR9+/YMGzbMUazZ7XZMJhMRERGYTCaDU4uIiIjIX6U911xAnz59OHTo0E2njR09epR9+/Y5Tv602WxUrVqV119/ncDAQKpXr25UXHFSTZs2JTAwkPfee4/r169z+vRp7rnnHsaPH8/q1as5dOgQvr6+xMfHGx1VhE6dOul5UApEZmYmwcHBHDp0iM8++4xhw4Zx4MABmjZtytChQxk3bhzw/4s1QMWaiIiISDGjmWtOzmazcfr0acqUKcPOnTtp2rQpp0+fpkWLFgwdOtSxmbzJZMJms1G9enXi4uJwd3c3OLk4i5ycHNzc3OjVqxc5OTmMGTOGs2fPsmHDBoYPH864cePIzs7GYrFw9913ExoaanRkEZECYbPZ8PDwICMjg+TkZL7++mvq1q3LkiVLeP7555kwYQLw/58nRURERKR40sw1J7Z48WLM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TUWciIgrOHbsGACVK1c2OImIiIiIFCbNXBOR33X27Fk+//xzAMqXL8/MmTN5+umnqVu3Ll26dKFz584kJCQAMH36dDw8PGjXrp2KNRFxSSrVRERERFyTZq6JyB/67rvvuO++++jevTvR0dFs3bqVAwcOUL9+fdq0acPo0aNZsGABnTp1MjqqiIiIiIiISKEzGx1ARIq2mjVrsmXLFpYtW8Z3333HCy+8wMcff0xqaipbtmwhOTmZrVu3kp2djbp6ERERERERcTVaFioif6pBgwbs2LGDZs2akZyczIIFC1i1ahUnTpygWrVqxMTEYLHo6URERERERERcj5aFishftn//fqKjo3nwwQeZPn06/v7+RkcSERERERERMZSmmojIX9agQQO+/PJLGjZsiLe3N2+99RZms1aXi4iIiIiIiOvSzDURuW3/+c9/8PT0pFq1akZHERERERERETGUyjUREREREREREZF80nouERERERERERGRfFK5JiIiIiIiIiIikk8q10RERERERERERPJJ5ZqIiIiIiIiIiEg+qVwTERERERERERHJJ5VrIiIiIiIiIiIi+aRyTUREREREREREJJ9UromIiIiIiIiIiOSTyjUREREREREREZF8UrkmIiIiIiIiIiKSTyrXRERERERERERE8un/Aewzw+Bsdz/1AAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1400x500 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "✅ 可视化完成\n"
     ]
    }
   ],
   "source": [
    "# 可视化示例\n",
    "fig, axes = plt.subplots(1, 2, figsize=(14, 5))\n",
    "\n",
    "# 产品销售额对比\n",
    "product_sales_sorted = df_sales.groupby('product')['amount'].sum().sort_values(ascending=False)\n",
    "axes[0].bar(range(len(product_sales_sorted)), product_sales_sorted.values, color='steelblue', edgecolor='black')\n",
    "axes[0].set_xticks(range(len(product_sales_sorted)))\n",
    "axes[0].set_xticklabels(product_sales_sorted.index, rotation=45, ha='right')\n",
    "axes[0].set_title('Product Sales Comparison', fontsize=14, fontweight='bold')\n",
    "axes[0].set_ylabel('Sales Amount (¥)')\n",
    "axes[0].grid(axis='y', alpha=0.3)\n",
    "\n",
    "# 地区销售占比\n",
    "region_sales = df_sales.groupby('region')['amount'].sum()\n",
    "colors = ['#ff9999', '#66b3ff', '#99ff99', '#ffcc99', '#ff99cc']\n",
    "axes[1].pie(region_sales.values, labels=region_sales.index, autopct='%1.1f%%', \n",
    "            colors=colors[:len(region_sales)], startangle=90)\n",
    "axes[1].set_title('Regional Sales Distribution', fontsize=14, fontweight='bold')\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()\n",
    "\n",
    "print(\"✅ 可视化完成\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 6️⃣ 决策建议 (Decision Making)\n",
    "**核心**: 从数据到行动\n",
    "\n",
    "**输出内容**:\n",
    "- 关键发现 (Key Findings)\n",
    "- 业务洞察 (Insights)\n",
    "- 可行动建议 (Actionable Recommendations)\n",
    "- 预期影响 (Expected Impact)\n",
    "\n",
    "**报告结构**:\n",
    "1. 执行摘要 (1页)\n",
    "2. 问题背景\n",
    "3. 数据说明\n",
    "4. 分析发现 (图表+文字)\n",
    "5. 结论与建议\n",
    "6. 附录 (详细数据)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "============================================================\n",
      "数据分析报告\n",
      "============================================================\n",
      "\n",
      "【核心指标】\n",
      "  · 总销售额: ¥33,995\n",
      "  · 订单总数: 5\n",
      "  · 平均客单价: ¥6,799.00\n",
      "\n",
      "【产品表现】\n",
      "  · 最佳产品: iPhone 15 (¥13,998)\n",
      "\n",
      "【地区分析】\n",
      "  · 最强地区: 华东 (¥13,998)\n",
      "\n",
      "【行动建议】\n",
      "  1. 加大iPhone 15的库存和推广力度\n",
      "  2. 在华东地区增加营销投入\n",
      "  3. 分析低销售产品的原因，考虑优化或下架\n",
      "  4. 建立客户画像，实施精准营销\n",
      "\n",
      "============================================================\n"
     ]
    }
   ],
   "source": [
    "# 生成分析报告示例\n",
    "def generate_analysis_report(df):\n",
    "    \"\"\"\n",
    "    生成结构化分析报告\n",
    "    \"\"\"\n",
    "    report = []\n",
    "    report.append(\"=\"*60)\n",
    "    report.append(\"数据分析报告\")\n",
    "    report.append(\"=\"*60)\n",
    "    \n",
    "    # 1. 核心指标\n",
    "    report.append(\"\\n【核心指标】\")\n",
    "    report.append(f\"  · 总销售额: ¥{df['amount'].sum():,}\")\n",
    "    report.append(f\"  · 订单总数: {len(df):,}\")\n",
    "    report.append(f\"  · 平均客单价: ¥{df['amount'].mean():,.2f}\")\n",
    "    \n",
    "    # 2. 产品表现\n",
    "    report.append(\"\\n【产品表现】\")\n",
    "    top_product = df.groupby('product')['amount'].sum().idxmax()\n",
    "    top_sales = df.groupby('product')['amount'].sum().max()\n",
    "    report.append(f\"  · 最佳产品: {top_product} (¥{top_sales:,})\")\n",
    "    \n",
    "    # 3. 地区分析\n",
    "    report.append(\"\\n【地区分析】\")\n",
    "    top_region = df.groupby('region')['amount'].sum().idxmax()\n",
    "    top_region_sales = df.groupby('region')['amount'].sum().max()\n",
    "    report.append(f\"  · 最强地区: {top_region} (¥{top_region_sales:,})\")\n",
    "    \n",
    "    # 4. 建议\n",
    "    report.append(\"\\n【行动建议】\")\n",
    "    report.append(f\"  1. 加大{top_product}的库存和推广力度\")\n",
    "    report.append(f\"  2. 在{top_region}地区增加营销投入\")\n",
    "    report.append(\"  3. 分析低销售产品的原因，考虑优化或下架\")\n",
    "    report.append(\"  4. 建立客户画像，实施精准营销\")\n",
    "    \n",
    "    report.append(\"\\n\" + \"=\"*60)\n",
    "    \n",
    "    return \"\\n\".join(report)\n",
    "\n",
    "# 生成并打印报告\n",
    "print(generate_analysis_report(df_sales))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "\n",
    "## 二、脏数据的四大类型\n",
    "\n",
    "### 为什么关注数据质量？\n",
    "> \"Garbage In, Garbage Out\" - 垃圾数据输入，垃圾结果输出\n",
    "\n",
    "数据质量直接影响分析结果的可信度和决策的准确性。\n",
    "\n",
    "---"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1. 缺失值 (Missing Values)\n",
    "\n",
    "**定义**: 数据集中某些字段没有记录值\n",
    "\n",
    "**表现形式**:\n",
    "- `NaN` (Not a Number)\n",
    "- `None`\n",
    "- 空字符串 `\"\"`\n",
    "- 特殊标记 (如 `9999`, `-1`, `N/A`)\n",
    "\n",
    "**产生原因**:\n",
    "- 数据采集失败\n",
    "- 用户未填写\n",
    "- 系统错误\n",
    "- 数据合并时匹配不上\n",
    "\n",
    "**Excel对比**:\n",
    "- Excel: 空白单元格，需要手动查找\n",
    "- Pandas: `isnull()`, `isna()` 快速检测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "包含缺失值的数据:\n",
      "  customer_id  name   age  city  purchase_amount\n",
      "0        C001    张三  28.0    北京           1200.0\n",
      "1        C002    李四  35.0    上海              NaN\n",
      "2        C003  None  42.0    广州           3500.0\n",
      "3        C004    赵六   NaN    深圳            800.0\n",
      "4        C005    王五  31.0  None           2100.0\n",
      "\n",
      "缺失值统计:\n",
      "customer_id        0\n",
      "name               1\n",
      "age                1\n",
      "city               1\n",
      "purchase_amount    1\n",
      "dtype: int64\n",
      "\n",
      "缺失值占比:\n",
      "customer_id         0.0\n",
      "name               20.0\n",
      "age                20.0\n",
      "city               20.0\n",
      "purchase_amount    20.0\n",
      "dtype: float64\n"
     ]
    }
   ],
   "source": [
    "# 创建包含缺失值的数据\n",
    "data_missing = {\n",
    "    'customer_id': ['C001', 'C002', 'C003', 'C004', 'C005'],\n",
    "    'name': ['张三', '李四', None, '赵六', '王五'],\n",
    "    'age': [28, 35, 42, None, 31],\n",
    "    'city': ['北京', '上海', '广州', '深圳', None],\n",
    "    'purchase_amount': [1200, None, 3500, 800, 2100]\n",
    "}\n",
    "\n",
    "df_missing = pd.DataFrame(data_missing)\n",
    "\n",
    "print(\"包含缺失值的数据:\")\n",
    "print(df_missing)\n",
    "\n",
    "print(\"\\n缺失值统计:\")\n",
    "print(df_missing.isnull().sum())\n",
    "\n",
    "print(\"\\n缺失值占比:\")\n",
    "print((df_missing.isnull().sum() / len(df_missing) * 100).round(2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 可视化缺失值\n",
    "plt.figure(figsize=(10, 4))\n",
    "\n",
    "# 缺失值热力图\n",
    "sns.heatmap(df_missing.isnull(), cbar=False, yticklabels=False, cmap='viridis')\n",
    "plt.title('Missing Values Heatmap (Yellow = Missing)', fontsize=14, fontweight='bold')\n",
    "plt.xlabel('Columns')\n",
    "plt.tight_layout()\n",
    "plt.show()\n",
    "\n",
    "print(\"✅ 缺失值可视化完成\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2. 异常值 (Outliers)\n",
    "\n",
    "**定义**: 明显偏离正常范围的数据点\n",
    "\n",
    "**常见异常**:\n",
    "- 负数年龄: `-5岁`\n",
    "- 超出范围: `体温150°C`\n",
    "- 极端值: `月薪1000万`\n",
    "- 逻辑错误: `出生日期晚于当前日期`\n",
    "\n",
    "**检测方法**:\n",
    "1. **统计法**: 3σ原则 (均值±3倍标准差)\n",
    "2. **IQR法**: 箱线图方法 (Q1-1.5×IQR, Q3+1.5×IQR)\n",
    "3. **业务规则**: 根据业务逻辑判断\n",
    "\n",
    "**Excel对比**:\n",
    "- Excel: 手动排序查看，使用条件格式高亮\n",
    "- Pandas: `describe()`, `quantile()`, 箱线图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "薪资数据统计:\n",
      "count       100.000000\n",
      "mean      51835.116134\n",
      "std       25131.376176\n",
      "min       -5000.000000\n",
      "25%       43874.401022\n",
      "50%       48730.437082\n",
      "75%       55598.391049\n",
      "max      200000.000000\n",
      "Name: salary, dtype: float64\n",
      "\n",
      "排序后的极端值:\n",
      "最低5个: [-5000.          1000.         23802.5489591  30124.31085399\n",
      " 30403.2987612 ]\n",
      "最高5个: [200000.         180000.         150000.          68522.78184509\n",
      "  65792.12815507]\n"
     ]
    }
   ],
   "source": [
    "# 创建包含异常值的数据\n",
    "np.random.seed(42)\n",
    "normal_data = np.random.normal(50000, 10000, 95)  # 95个正常值\n",
    "outliers = np.array([150000, 180000, -5000, 200000, 1000])  # 5个异常值\n",
    "salary_data = np.concatenate([normal_data, outliers])\n",
    "\n",
    "df_outliers = pd.DataFrame({\n",
    "    'employee_id': [f'E{str(i).zfill(3)}' for i in range(1, 101)],\n",
    "    'salary': salary_data\n",
    "})\n",
    "\n",
    "print(\"薪资数据统计:\")\n",
    "print(df_outliers['salary'].describe())\n",
    "\n",
    "print(\"\\n排序后的极端值:\")\n",
    "print(\"最低5个:\", df_outliers['salary'].nsmallest(5).values)\n",
    "print(\"最高5个:\", df_outliers['salary'].nlargest(5).values)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "IQR异常值检测:\n",
      "  Q1 (25%分位数): ¥43,874.40\n",
      "  Q3 (75%分位数): ¥55,598.39\n",
      "  IQR: ¥11,723.99\n",
      "  正常范围: [¥26,288.42, ¥73,184.38]\n",
      "\n",
      "检测到 6 个异常值:\n",
      "   employee_id         salary\n",
      "74        E075   23802.548959\n",
      "95        E096  150000.000000\n",
      "96        E097  180000.000000\n",
      "97        E098   -5000.000000\n",
      "98        E099  200000.000000\n",
      "99        E100    1000.000000\n"
     ]
    }
   ],
   "source": [
    "# IQR法检测异常值\n",
    "Q1 = df_outliers['salary'].quantile(0.25)\n",
    "Q3 = df_outliers['salary'].quantile(0.75)\n",
    "IQR = Q3 - Q1\n",
    "\n",
    "lower_bound = Q1 - 1.5 * IQR\n",
    "upper_bound = Q3 + 1.5 * IQR\n",
    "\n",
    "print(f\"IQR异常值检测:\")\n",
    "print(f\"  Q1 (25%分位数): ¥{Q1:,.2f}\")\n",
    "print(f\"  Q3 (75%分位数): ¥{Q3:,.2f}\")\n",
    "print(f\"  IQR: ¥{IQR:,.2f}\")\n",
    "print(f\"  正常范围: [¥{lower_bound:,.2f}, ¥{upper_bound:,.2f}]\")\n",
    "\n",
    "outliers_detected = df_outliers[(df_outliers['salary'] < lower_bound) | (df_outliers['salary'] > upper_bound)]\n",
    "print(f\"\\n检测到 {len(outliers_detected)} 个异常值:\")\n",
    "print(outliers_detected)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABW0AAAHqCAYAAAB/bWzAAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAnq9JREFUeJzs3Xt8zvX/x/HntfPp2olhNmwOOY0Ocij8kJRCDq2aEjmEQmr4IuWUckgKpRxyTOhbVKi+lWOkUnJMCTPMaRp2MDPb5/fH2sVlG5sdrmvb4367Xbe5Pu/35/15XZ+9XXtfr+v9eX9MhmEYAgAAAAAAAADYBQdbBwAAAAAAAAAAuIqkLQAAAAAAAADYEZK2AAAAAAAAAGBHSNoCAAAAAAAAgB0haQsAAAAAAAAAdoSkLQAAAAAAAADYEZK2AAAAAAAAAGBHSNoCAAAAAAAAgB0haQsAAAAAAAAAdoSkLYACkZ6erjlz5ujee++Vt7e3XFxcFBQUpPDwcG3atClfbZtMJrVs2bJgAi0gJpMpy8PFxUUVKlTQAw88oM8++yzLPhs3bpTJZNLYsWNv6Zj79u3LVb2FCxfKZDJp4cKFkqQjR47IZDLpmWeeuaXj3ohhGNq/f7/leWEeKy/i4uIUGBioNWvWSLp67q9/eHh4qHbt2ho5cqQuXrxo05ivVRDn8Y8//rD8OyYmRmazWVu3bi2A6AAAKDqMMRljFvax8iKnMeaN4sqM/dq+NnbsWJlMJm3cuDHPMVx/bkqylStXqmLFijp37pytQwFswsnWAQAo/gzD0KOPPqovvvhC7du317hx4+Tl5aXDhw9r/vz5+uyzzzR58mT95z//sXWoBaps2bJ6++23Lc9TU1N14sQJLV26VOHh4RowYIDeffddS3nt2rW1ZMkS1a9fP8/H6tevn7799ltFRUXdtO7//d//acmSJbr33nvzfJy8uHDhgtq0aaM6depYBu8BAQFasmSJqlWrVqjHvpnBgwerXr16at++vdX25s2bq2/fvpIy+m1CQoJ++uknTZ48Wdu2bdOGDRtkMplsEXKBmjBhgsaNG6fU1FRJUlBQkAYPHqyePXtq165dcnd3t3GEAADcHGPMDIwx7X+MmVddunRR9erVVbt27Tztl925Kcm6dOmit99+Wy+88IKWLFli63CAomcAQD4tW7bMkGRMmTIlS1lsbKxRqVIlw9HR0YiKirql9iUZLVq0yF+QBUySUaVKlWzLUlJSjM6dOxuSjEWLFhXI8apUqZLj8W4mKirKkGT06NGjQGIp7Hbza9u2bYYkY9u2bZZtGzZsuGGsw4cPNyQZq1evLqIobyy/57ZFixbG9X/iL1y4YHh5eRlvvPFGAUQIAEDhY4xpjTGmbd3KGNMwrr6eguhr9npuCtP69esNScaPP/5o61CAIsfyCADybfPmzZKkBx98MEtZ2bJl1bNnT6Wnp+vnn38u6tBswsXFRXPnzpWXl5fGjBkjwzBsHVKpMmbMGN1zzz1q0qRJrvf5v//7P0nS3r17Cyssm/P29lZERISmT5+uS5cu2TocAABuijGmNcaYtnUrY0zkX6tWrVSjRg1NmjTJ1qEARY6kLYB88/LykiS99957lsuxrzVq1ChdvnxZTzzxhNX2b775Rg899JCCgoLk6uqq8uXL65FHHtHvv/9+02Nu27ZN4eHhqlKlilxdXVW2bFm1bt1a69evt6oXEhKitm3bavLkyfLz81P58uU1btw4OTg4qF27dlnaTU5Olo+PjyWJd6vKlCmjdu3a6ciRI/r1118lZb/e2KFDh9StWzdVqlRJbm5uCgkJUb9+/RQTEyPp6hpY0dHRio6Otto/u9e2aNGiLOuNXevtt99WaGioXF1dVadOHatL66Ssa5VdKyQkRCEhIZZ6oaGhkqRFixZZ1uTKab2xH3/8UR06dJC/v7/c3NxUu3ZtjR8/Pkvy0GQyaeDAgVq1apUaNmwod3d3BQQEqHv37jp16tRNz/uBAwf07bff6qmnnrpp3WsdP35cklSjRg2r7f/8848iIyNVtWpVubi4qHz58nryySf1559/Wups2bJFTk5OqlWrltXriYqKko+Pj0JDQ3X+/HlJGeewffv2Wr16te644w65ubkpODhYL730khITE28aZ27Oo8lksqzxd/3v4plnntHp06e1YsWKPJ0fAABsgTFmVowxn7Ha197HmDnJbk3bjRs36v7771fZsmXl5eWlOnXq6LXXXtPly5cl5XxuMi1evFj33HOPPD095enpqXvuuUcff/xxlmP/888/6t+/vwIDA+Xm5qa7775b33zzje6//37L70HKGDe6ubnpm2++UdWqVWU2mzVgwABJUlpammbNmqXGjRurbNmycnNzU+XKldW3b1+dPXvW6jWZTCYtW7ZMo0ePVuXKleXm5qawsDB99tlnSk1N1dixY1WlShV5enrqzjvv1Ndff50l5h49emj16tU6cuRIPs46UAzZeqovgOJvz549houLiyHJKFeunNG7d2/jo48+Mo4ePZrjPvPnzzdMJpPRqFEj4+233zbmz59vDB482HBxcTG8vb2NuLg4S11ddznR//73P8PZ2dmoVauWMXnyZGP+/PnGyy+/bHh7exuOjo7Gn3/+aalbpUoVw8fHx6hQoYIxdepU45VXXjH27t1rtGrVynBycjJOnz5tFdfHH39sSDLmz59/w9esG1y6lmnMmDGGJGP27NmGYVy9fGrMmDGGYRjGuXPnjODgYKNSpUrGhAkTjA8//NAYOnSo4ebmZtSoUcNISUkxEhMTjSVLlhhly5Y1ypYtayxZssTYtWvXDV/bggULDEnGggULDMO4ehmVr6+v4e/vb4wfP96YPn260bRpU0OSMWzYMEvM1+97rWsvnzt06JDx9ttvG5KM5s2bG0uWLDFOnTqV7SVbixcvNhwcHIwKFSoYo0ePNt59913jkUceMSQZjRs3NpKSkqzOa7Vq1QwfHx9j+PDhxuzZs43w8HBDknHXXXfd8HwbhmFMnjzZkGTs3bvXanvmuY+IiDBiY2Mtj+joaOPTTz81ypcvbzRu3Ni4fPmyZZ+YmBijSpUqhslkMnr06GHMmjXLGDZsmOHl5WV4eHgYmzdvttR95ZVXrM5lamqqcc899xjOzs7GTz/9ZHUOK1WqZLi6uhrPP/+88cEHHxhPPPGEIclo1qyZceXKFavf2a2cxyVLlhi1atUyJBlLliyxupQsNTXV8PDwMB599NGbnksAAGyNMWb2GGNmsOcx5rWPHTt2ZOlrmb/DDRs2GIZhGD/++KPh7OxsNG7c2HjnnXeMOXPmGBEREVavOadzYxiG8eyzzxqSjAYNGhhTpkwxpkyZYtxxxx2GJGPgwIGW4yYlJRlhYWGGyWQyevXqZbz33nvGU089ZTg6OhplypSx6ns9evQwHBwcDF9fX2PkyJHGtGnTjE8++cQwDMPo3r27Icl4/PHHjQ8++MCYPXu2ZemOZs2aZTk/oaGhRo0aNYw333zTePPNN42yZcsajo6ORtu2bY2aNWsa06ZNs2x3c3Mzjhw5YnWet27dakgyZs6cedPfFVCSkLQFUCC+/fZbIzQ01JBk9ahdu7YxceJEIyEhwVI3LS3NqFSpklG5cmXj0qVLVu1kri26du1ay7brBzlNmzY1PDw8jLNnz1rt+/777xuSjPfee8+yrUqVKoYk4+uvv7aqu2TJEkOS8c4771htb9u2reHl5WUVb3ZyM6CeNWuWIcmyhuj1A+ovvvjCkGR89tlnVvu9/fbbRv369Y3ff//d6nVcf7ycXltOA2qTyWT88ssvlnqXL1827rnnHsNkMhl//PFHtvtef7xrY8hu8Hz9tnPnzhlms9kICAjI8uFl1KhRhiRj9OjRlm2Z/ebnn3+2qtukSRNDknHgwIEscV3rvvvuMzw9PY20tDSr7ZnnPqdHUFBQlg+A3bp1y/bD1d69ew1XV1ejatWqliRramqq0bhxY8PR0dH4+eefjVdffdWQZLz55ptZzqEkY9q0aVbbX3rpJUOSMXfu3AI5j9mtaZupZcuWhre3tyV2AADsGWPMrBhjFp8x5rWPGyVtM8eC//zzj1X7ERERRtOmTY2UlJQcz833339vSDJat25tNQHh8uXLRqtWrQxJxvr16w3DMIzXX3/dkGS8/fbbVsd57bXXsvS9Hj16GJKM4cOHW9U9cOCAJWF7vSZNmhgmk8lITEy0Oj/lypUzzp8/b6n37rvvGpKMwMBA48KFC5btmf/X5s2bZ9VuSkqK4erqajz88MNZjgmUZCyPAKBAtGnTRn///be++eYbvfTSS7r77rvl6Oio/fv3a+TIkbrnnnssl8o4ODjo77//1m+//SZXV1dLG8nJyXJxcZEkxcXF5XisjRs3KioqSmXKlLFsu3z5shwcHLLd18XFRW3atLHa9uijj8rHx8fqLqSnTp3Sd999p8cee8xyOV5+pKenS5IcHR2zLQ8KCpIkTZo0SZ9++qnlEvoXX3xRu3bt0h133HHTY2T32nLywAMPqGHDhpbnzs7OGjx4sAzD0BdffJGrNvLq22+/VUJCgl544QWVK1fOquyVV16Rp6enPvnkE6vtNWrUUKNGjay2Za4ddubMmRseLzo6WsHBwZa+cL0HHnhA3333neXx5ZdfavLkyXJxcdHtt9+uH3/8UVLGJV9ffPGFqlevnuUyvLp166pbt246fPiw5bJEJycnLV26VB4eHnriiSf0xhtvqF27dhoyZEiWGMqUKaPnn3/eatuIESMkSStXrsw27ls5jzkJCQlRfHz8Tc8lAAD2gDFmVowx7X+Mee3jo48+uunryfydDRgwQBs3brQsibBs2TJt2bLF0n+z89lnn0nKWHLB2dnZst3Z2Vnjx4+XJMu5+OSTT+Tt7Z1lLDp06NAc+2b79u2tnteoUUPx8fGaO3eu1fZ//vlHPj4+MgxD586dsyp7+OGH5ePjY3les2ZNS9ve3t6W7VWrVpUkyzIemVxcXBQYGKiDBw9mGyNQUjnZOgAAJYejo6MefPBBy80izp8/r1WrVmns2LHau3evxo4da1nfytXVVVu3btVXX32lvXv36sCBA4qOjrbcUOHKlSs5HsfJyUnR0dGaPn26du/erQMHDujw4cNKS0vLdt+AgIAsg1p3d3dFRERo9uzZ2r9/v2rXrq2PP/5YaWlp6tmzZ4Gcj3/++UeSVL58+WzLGzRooNGjR2vixIl67LHH5OjoqLvuuksPP/ywevbsqSpVqtz0GNm9tpzUr18/y7batWtLylh/tTBktlu3bt0sZW5ubqpevbrV+rBS9ucrc5CX3Xp21zp16pTq1auXY3lgYKDuv/9+q20dOnTQU089pTp16ujJJ5/U33//rbi4OCUkJKhVq1YymUxZ2gkLC7O8vsaNG0uSqlWrpilTpui5556Th4eHZe2269WuXdvqg6QklStXTn5+fjp8+HC2cd/KecxJ2bJlJUknTpxQYGBgrvYBAMCWGGNaY4xZPMaYmXKzDmtmsnb58uVavny5PDw81KxZMz3yyCPq3r27zGZzjvve6FxcO2aVpL/++ku1a9fOkgR2c3NTtWrVLAn+a1WoUCHLNhcXF61atUobNmzQ/v379ffff+vUqVOWse/1/1cyk9KZnJwyUlHXj0Uz48r8YuJaZcuWzfV4FygpmGkLIF8SExP1yiuvWM0myOTr66uePXtq06ZNMplM2rJli6Wse/fuat26tT7//HMFBQVp4MCB2rBhg2bOnHnTY44ePVqNGjXSwoUL5evrq169emnt2rVatWpVtvUzBwXX69WrlyRZYl+8eLGqV6+u5s2b3zSG3Ni+fbukjIFzTsaNG6ejR4/qgw8+0GOPPaaYmBiNGzdOtWrVsrqxQE5yem3Zye4b+swPIdd+K5+TG33IuZnskpeZx7/+2Ln9gJCTzNeUF0FBQWrevLmio6O1f/9+y/YbxS1lPW/fffedJOnixYuWWQ/Xuz5he22bN/t95uU85iS/5xcAgKLAGDNnjDGvsvcxZm65ublp9erV2rt3ryZOnKgWLVpo27ZtGjhwoMLCwnT69OmbtpHducju95DTWNTNzS3b7df3hfj4eDVo0EBdu3bVzp07deedd2rs2LHatWuXunbtmqs2bhRzThjDojQiaQsgX5ydnfXmm2/qzTffzLFOlSpVZDabLX+sf/rpJy1ZskRt2rTRX3/9pQ8//FCRkZH6v//7Px07duyGxzt58qQmTJigunXr6tChQ1qyZImGDx+uBx54QCdPnsxT7I0aNVJYWJiWLl2qv//+W7t27SqwGRCnTp3SunXrVKtWLcs33Nc7c+aMNm7cKH9/f/Xr10/Lli1TTEyMli5dqkuXLmnGjBkFEkum7L7lz0xQ3nbbbZKuDtaSk5Ot6qWmplrdCTa3Mu9wu2/fvixlSUlJOnz4sOUyqIIQGBh4S3FKV7/Rd3BwsNy1948//si27u7duyXJKvYPP/xQK1eu1MCBA1W/fn1FRkbqr7/+yrJvdpd1nTx5UvHx8ZZLxa5XkOcx89LO7GZNAABgLxhjZo8xZobiNMbMjUOHDunHH39U3bp1NWLECH311VeKjY3VgAEDdPToUa1YsSLHfW90Lq4fs9aoUUMHDhzIkoBOS0vT33//natYZ82apX379mn8+PH6+eefNX36dPXr10/169fXoUOHctXGrYiLi2P8ilKHpC2AfHF1dVV4eLj27NmjSZMmWS49u9bixYsVHx+vRx99VJIs3xSHhoZafWN66tQpLVy4UFLO37ifOXNGhmEoKCjI6tvgpKQkywyKvHxb37NnTx09elQTJ06Ug4ODevToket9c3L58mX16dNHycnJGjt2bI71Fi1apFatWmVZ6+uee+6RZP1tspOTU75mIUjSF198YZUwTElJ0VtvvSVnZ2d17txZ0tVLlzIHeJmWLVumlJQUq22ZH5BuFFebNm3k5eWlGTNmKDY21qps2rRpunjxorp06XLrL+o61atX18mTJ296idv1oqOjtXnzZgUFBalWrVpydHRUx44d9ffff2vx4sVWdQ8ePKjly5eratWquv322y3bXnzxRdWoUUNTpkzRwoULdfnyZT311FNZYomOjtann35qte2NN96QJD355JPZxpfX83ij3010dLTc3NxyvKQSAAB7wBgzK8aYVxWXMWZuvfDCC2rVqpXVWq6urq6W2dSZv7Pszk3m6xw3bpzV9vT0dMsYM7NORESE4uLi9OGHH1od/8MPP7zhes/Xyvx/Vr16davt69ats8wCz2+ful5aWppiYmJytbQHUJKwpi2AfHvnnXe0e/dujRw5UkuWLNGjjz6qypUr68KFC9qwYYO++uorPfDAA4qMjJQkNW3aVP7+/po/f748PDxUt25dHTx4UB9++KECAwN1+vRpXbhwIdtj1alTR9WqVdO3336r3r1765577tHx48e1YMECy5pUOe2bnaefflojRozQwoUL9eCDD2ZZb+lGkpKSrG4scPHiRcXExOjjjz/WwYMHNWTIED3xxBM57t+jRw+9++676tWrl7Zt26a6desqNjZWc+bMkYuLiwYPHmypW6FCBW3btk3vvPOOmjRpYrlpQl6YzWY1bdpUgwYNkpeXlz766CPt2LFDb7/9tipVqiQpY2ZIaGio5syZI0dHR91+++36+eef9d///lc1atSw3BRByrihlpOTkzZv3qx58+Zle7MKPz8/y2u8/fbb1bdvXwUHB+uHH37QkiVL1LBhw2xv1nWrHnzwQX3zzTf67bffsj1Hhw8ftvqdpaam6uDBg1q4cKEuXryoRYsWWQbDkydP1pYtW9SzZ09t2LBB99xzj06dOqVZs2bJ0dFRH374oRwcHHTlyhV169ZNFy9e1IIFC+Tu7q4777xTI0aM0IQJEyxrymVydnZWt27dtGXLFtWsWVPfffedVq1apSeeeMLyoTO/5zFzFsL48eP1f//3f1ZrrP3666+677778nTZIwAAtsAYMwNjTPsfY+bX8OHD9f3336tp06bq06ePAgMDdeDAAb3//vsKDg5WRESEpOzPzf3336/evXvrww8/1D333KOIiAi5u7vrk08+0aZNm/Tcc8+pRYsWkqSXXnpJn3zyifr376+ff/5Zd999t37++Wd9/PHHcnZ2ztVyBe3bt9f06dM1ePBgy437tm/frqVLl6p27drat29fnv6v5MbevXt18eJFy7rWQKlhAEABSE5ONqZNm2Y0b97c8Pf3NxwdHQ2z2Wzce++9xgcffGCkpaVZ1f/tt9+MBx980PDz8zM8PDyMpk2bGh999JERFxdnODk5Ge3bt7fUlWS0aNHC8vzvv/82Hn30USMgIMBwc3Mz7rrrLuPdd981UlJSjICAAKNevXqWulWqVDGq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p06d0lNPPaXy5curTJky6tChgw4fPmype/HiRfXr109ly5aVn5+fOnTooJiYmByP+c4776hGjRry9vZWWFiYVqxYYSlLTk7W888/rwoVKsjPz0/33Xef9uzZYyk/fPiw2rdvL39/f5UrV05PP/20zp07l/sTAwAAgGLBZDLJ3d1dXl5e8vT0lK+vrx5++GEdOXLEpjHZ6rNJkSdtz549qwcffFDh4eGKjY3VL7/8ol9++UXDhw/XuXPn9NBDDykiIkIXLlzQ0qVLFRkZqXXr1kmSNm3apAEDBmjevHlKSEhQz5491a5dO/3zzz+SpNdff11r167V9u3bdfr0aXl7e+uJJ56wHDsiIkJOTk46ceKEdu3apfXr12v8+PGSdNNjA0BpsXLlSlWvXl2tWrXSk08+qVatWql69epauXKlrUMD7Erz5s2VmJioxMREXbx4UYsXL9bLL7+s77//3tah3dBdd92lQYMGqU+fPpYvZPbv369p06Zp9uzZcnd312OPPSYHBwcdPHhQR48eVbly5fTII49Y2nj22We1b98+7dy5UzExMXJ3d1evXr2yPd6HH36oqVOnatWqVbpw4YImTZqkZ555Rr/88oskafLkydq0aZN27Nihs2fPql27dnr44YdlGIYkqVevXvLx8dGxY8d0+PBhXb58WYMGDSrkswQAAABb+Prrr5WYmKikpCQdO3ZM/v7+6tatm63DsokiT9pGRUWpRYsWGjhwoJycnBQcHKynn35amzdv1sqVK+Xn56fIyEg5OzuradOmioiI0IIFCyRJ8+bNU9euXXXffffJ0dFRgwYNUkBAgFatWiVJmjt3rl555RWFhITIw8NDkydP1pYtW3Tw4EEdOnRIGzZs0LRp02Q2mxUUFKQRI0ZY2r7ZsQGgNFi5cqXCw8NVr149bdu2TQkJCdq2bZvq1aun8PBwErclRVJSzo9Ll3JfNzk5d3UL2JIlS1SvXj15e3urXr16Wrp0qSTpgw8+UI0aNSz1li9fLpPJpN9///3f8JLk7u6uP/74Q5cvX9bLL7+sqlWrymw2q02bNvrjjz8kSUeOHJHJZNKrr74qf39/DRw4MFdx3XvvvQoLC9OuXbss277++ms1atRIPj4+qlmzpqZPn25JRj7zzDN65plnrNq49pv8li1b6pVXXlHLli3l5eWlsLAwff3115a6v/76q+69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qX///vrf//6npKQkPfbYYxo3bpwmTJiQ7THT09O1aNEiDR48WJcvX7YqW7x4sebMmaPNmzfrtttu06effqr27dvr6NGj8vPzs9Tbs2ePhg4dWvAnxAa2bt2qnj17at++fZZEd3JysuLi4nTbbbfpu+++s6q/e/duhYWFZduWq6urXF1ds2x3cHCQgwP3HC7uTLqavCsOMpczkMkkmfIZ979tmUymUt2Xi1sfAADcWF7+pvHuDwBAaZOUlPPj+supb1Q3OTl3dQuJyWTS22+/rSpVqqhMmTIKDw+3XEK7ceNGhYSEaPTo0SpTpoyCg4M1YsQIXblyRVLGuovTpk1TzZo1ZTab1aRJE23dutWq7eHDh6tcuXLq0KFDruKpU6eOmjdvrl27dlm2/fzzz2rZsqX8/PwUGhqqV1991TLLdOzYsWrZsqVVGyEhIVq4cKEk6ZlnntHzzz+vjh07ymw2q1q1alq0aJGl7sGDB/XAAw/Iz89Pd9xxh3799VerturWras33ngj21ife+45Va5cWaNGjZIkDRs2TLfffrt69eqVpe7ixYv1xRdf6NNPP5Wzs7NcXFy0f/9+jRo1Ss7OzoqPj1d8fLx2796d47np3bu35syZk21SN3MpgMzZs87Ozhmz9aKiLHWSkpLUtWtXqxmlxdntt9+uixcv6pVXXtHly5cVHR2tIUOGqG3bturWrZvOnDmjWbNmKT09XevXr9fy5cvVu3dvW4cNAACAIsRMWwAAShsvr5zLHn5YWrv26vNy5aSLF7Ov26KFtHHj1echIdLZs1nrFeKl7AsWLNDmzZvl6+urbt26qVu3bvr2228lSUePHtXBgwcVHR2tkydPqm3btvL29tbLL7+sd999V2+99Za+/PJL3XnnnVq1apU6dOigXbt2qVKlSpKkffv26fjx47qY0+u3eomGduzYod27d2vZsmWSpOjoaLVp00ZvvPGGvv32W0VHR6tLly66cOGCZsyYkavXt2jRIn3++ef67LPP9NFHH6lPnz66//77Vb58eXXo0EFt2rTRl19+qejoaLVt29Zq33379uXYrslk0ty5c9WgQQPVrl1bn3zyiVWyOVNSUpKGDRum8ePHW12e6+PjI0lq1qyZtm7dKl9fX02aNCnH47322msKDg7Wxmv7y78ee+wxbdiwQbVr15ajo6PS0tL06KOP6o477rDUGTBggDp37qxWrVpp/PjxOR6nuPDy8tI333yjl156SeXKlZOXl5c6d+6sCRMmyMfHR2vXrtWgQYM0ZMgQVahQQTNnzsyS4AcAAEDJxkxbAABQbL3++uuqUqWKfHx89Oabb+q7775TTEyMpIybALz33nvy8vJSjRo1NGzYMC1YsECS9P7772vkyJFq0KCBHBwc9Oijj6px48Zavny5pe1nnnlGLi4u8vX1zfbYR48ela+vr3x9feXq6qq7775bZcuWtaxzu2zZMtWqVUsDBw6Ui4uLatSooUmTJmnevHm5vmts69at1aZNGzk5OemJJ57QlStXdPjwYf388886ePCgJk6cKDc3N9WsWTNPs1Br1qypVq1aydHRUc8//7ycnJzUvHlz1a9f36rejBkz5OPjo759+2bbzrp163Tu3Dn169fPct6zExwcnGPZe++9p1WrVumXX37RxYsX9dFHHykoKEipqamSpCVLlujvv//WmDFjcv36ioOwsDB99913On/+vI4fP66ZM2dakuFNmzbVjh07lJycrKioKPXs2dPG0QIAAKCoMdMWAIDSJoe70EuSHB2tn9/ojtXXr8dUQDcIc3V1tbpRVaYrV65kWbi/du3aln+HhIRIkk6cOCFJKl++vNWaqCEhIZayI0eOaMSIEXrllVcs5ampqapZs6bledmyZW8Y57Vr2qanpys6OloDBgzQAw88oEOHDuno0aOqWrWq1T5Vq1ZVcnKyTp8+nW2b199gy9//6o183N3dJUlpaWk6efKk/P39LUsLSFKNGjVuGO+1/vrrL0kZ5yE0NFS7d++2nL9rzZkzR/3795fj9f3iX5nrqQ4ZMkRBQUG6//77VaFChVzHIUkffvihXnjhBTVs2FCS9NRTT2nRokWaNWuWHn74Yb388svasmWLnJwYtgIAAKD0YKYtAACljadnzo/r72Z6o7r/JhFvWjePKlSoYHWDr0yHDx9WUFCQ1bZrZ3dmroGamXw8e/asVfI3KirKUlapUiXNnTtX58+ftzz279+vcePG5TleKeOGAqGhoXruuecUHR2tuLg4ValSRYcOHbKq9/fff8vV1VX+/v5ydna2zCaVMhK/OSVzr1e5cmXFxsYqPj7esu348eO5jrdKlSry9fW1zKytX7++fH19rZLWv/76q6Kjo/X0009b7XvkyBFVrlzZKtbk5GSlpqZa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UELdUtJ2586d+vzzz/X555/rt99+k2EYBR0XAAAAYJfWr18vb29vhYeHq3r16powYYKOHz9u67AAAABQguQ6aRsXF6eRI0eqQoUKatCggZ599ln1799f99xzjwIDAzVixAidP3++EEMFAAAAbK9x48Z69913dfLkSU2dOlV79+7VHXfcoYceekj//e9/lZqaausQAQAAUMzlKmn72Wef6fbbb9f58+e1bNkyXbx4UbGxsTp16pSSkpL0xRdf6NKlS7r77rv1+eefF3LIAAAAgO05OTmpevXqCgkJkZ+fn3bu3KmJEyeqatWq2rBhg63DQ3E2bJjUp0/GT5RO9AEAKPVylbT9+uuvtWPHDr3//vtq1aqVXF1dLWXOzs5q3Lix3nnnHW3btk1r164ttGABAAAAWztx4oSmTp2qO+64Qw0aNNCBAwc0bdo0HT9+XDt27NDo0aPVo0cPW4eJ4mzZMunDDzN+onSiDwBAqeeUm0oREREKCAiwPD98+LCqVq2qQ4cOqVq1apbtAQEBmjt3bsFHCQAAANiJypUrq1atWurZs6e6d+9uNU6WpJYtW2rp0qU2ig4AAAAlQa5m2rZr1049e/bUuXPnJEnNmjWTJDVs2LDwIgMAAADs0NatW7V79269+OKLCggI0JkzZ5Senm4pr1GjhjZu3Gi7AAEAAFDs5Sppu2PHDh06dEi1atXSxx9/bNluGEahBQYAAADYI3d3d1WpUkW//fabJGnKlCmqWrWqDhw4YOPIAAAAUFLkanmEunXravPmzVq4cKFeeuklJSQkaPHixUpNTdWSJUtkGIa6d+9e2LECAAAANjd48GD17t1bd955pyRp8uTJCggI0KBBg/S///3PxtEBAACgJMjVTNtM3bt31wsvvKCUlBSNGTNGycnJGj16tMaOHVtI4QEAAAD25ffff9fYsWPl7OwsSXJ0dNSwYcP0yy+/2DgyAAAAlBS5mmkrZQxOn332WSUmJsrPz09RUVGWnwAAAEBpYTabdeDAAd12222WbVFRUfL397dhVAAAAChJcjXTdtiwYWratKnatm2rnTt3ysXFpbDjAgAAAOxSjx491K5dO82bN0/fffed5s2bp/bt26tnz562Dg0AAAAlRK5m2m7evFk///yz6tWrJ0lq27atJKldu3aFFxkAAABgh8aPHy8nJye9/vrrOnXqlCpXrqxe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aNAg97onn3xSJ0+e1DPPPKPHHntMzz33nPr37+8ev/3227V+/XrV1dV1yOsFABeKpi0AAAAAAGiXV155RS+//LJKS0v1u9/9TsOGDVNsbKw2bNjgjklPT9eSJUtkjFFubq7CwsJUVFTUZFthYWHKysrS9ddfL5fLpe+//14DBw5sFOtwOHTHHXfIz89PAQEBuueee7Rx40ZJUnV1tTZv3qx777232Vw//PBDTZo0yb18zz33KCYmRiUlJXryySfldDq1cOFCDR482H1275VXXqmSkhL95z//6YiXCwAuGE1bAAAAAADQLt7e3poxY4beeecd/fDDD9q3b59uvPFG3XXXXdq+fbskae/evUpISNDQoUM1d+5cZWVlNXvmaq9evbR582ZdeumliouL0xNPPKEjR440ujZuWFiYvLy83Mu//vWvlZOTo6ysLL333nsKDg7W1KlTm801Pz9fQ4YMcS+vX79ehw8fVllZmaKjo/XSSy/p8OHDOnz4sEaMGCFJ8vf3V1hYWJfdKA0AWkLTFgAAAAAAtOn9999XaGioKioqJEleXl6Ki4vTqlWrFBcXpz179ujQoUO67bbblJqaquLiYn366aeaNm1as9vbtGmTXnzxRW3fvl3ff/+93nvvPcXGxraaw5nrzr7xxhvatGmT7r777kZN3XOd3SyeOXOm+vbtq759++rQoUP67W9/614+cOCAO87Hx+c8XhUA6Bw0bQEAAAAAQJsSEhIUHBys22+/XTk5OTLGqLKyUq+//rpyc3N14403qqKiQrW1tfL2rm837N27V8uWLZNUfzmDs7lcLkn1Z+/W1tbq3Xff1Ztvvtkk7lz33nuv3n77bX300Ue6++67W4yLiYlRYWGhe/mNN95QeXm5ysvLFR0drRdffNG9PHLkSElSVVWVysrKFBUVdd6vDwB0JJq2AAAAAACgTQ6HQ5999pn69++v6667ToGBgRo6dKjS0tK0Y8cOjR49WqNGjdKKFSs0c+ZMORwOLViwQGvXrpWvr2+T68TefffduvbaazV69GgNGjRIaWlpWrt2rXJyclRVVdViHjfccINOnDihCRMmKDo6usW4X/ziF9q1a9d5/Td+/fXXCg0N1fjx48/reQDQ0byMMcbqJAAAAAAAANrr8ssv1+9//3vNmDGjxZiSkhKNHDlS2dnZioyMbNd2H374Yfn5+WnFihUdlSoAXBCatgAAAAAAoFv473//q3/+85966qmn9N1338nPz6/V+D/84Q+qqqrSs88+2+a2S0pKdMUVV+jLL79UWFhYR6UMABeEpi0AAAAAAOgWfvazn+ngwYN67bXXdO2117YZX1VVpSlTpmjDhg265JJLWo2dO3eurr/+et1yyy0dlS4AXDCatgAAAAAAAABgI9yIDAAAAAAAAABshKYtAAAAAAAAANgITVsAAAAAAAAAsBGatgAAAAAAAABgIzRtAQAAAAAAAMBGaNoCAAAAAAAAgI3QtAUAAAAAAAAAG6FpCwAAAAAAAAA2QtMWAAAAAAAAAGzk/wNexQ1NMBHgdwAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 1400x500 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 可视化异常值\n",
    "fig, axes = plt.subplots(1, 2, figsize=(14, 5))\n",
    "\n",
    "# 箱线图\n",
    "axes[0].boxplot(df_outliers['salary'], vert=True)\n",
    "axes[0].set_title('Salary Distribution (Boxplot)', fontsize=14, fontweight='bold')\n",
    "axes[0].set_ylabel('Salary (¥)')\n",
    "axes[0].axhline(y=lower_bound, color='r', linestyle='--', label=f'Lower Bound: ¥{lower_bound:,.0f}')\n",
    "axes[0].axhline(y=upper_bound, color='r', linestyle='--', label=f'Upper Bound: ¥{upper_bound:,.0f}')\n",
    "axes[0].legend()\n",
    "axes[0].grid(axis='y', alpha=0.3)\n",
    "\n",
    "# 直方图\n",
    "axes[1].hist(df_outliers['salary'], bins=30, edgecolor='black', alpha=0.7, color='skyblue')\n",
    "axes[1].axvline(x=lower_bound, color='r', linestyle='--', linewidth=2, label='Bounds')\n",
    "axes[1].axvline(x=upper_bound, color='r', linestyle='--', linewidth=2)\n",
    "axes[1].set_title('Salary Distribution (Histogram)', fontsize=14, fontweight='bold')\n",
    "axes[1].set_xlabel('Salary (¥)')\n",
    "axes[1].set_ylabel('Frequency')\n",
    "axes[1].legend()\n",
    "axes[1].grid(axis='y', alpha=0.3)\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3. 重复值 (Duplicates)\n",
    "\n",
    "**定义**: 数据集中出现完全相同或部分相同的记录\n",
    "\n",
    "**类型**:\n",
    "- **完全重复**: 所有字段完全相同\n",
    "- **部分重复**: 关键字段相同(如订单ID相同)\n",
    "\n",
    "**产生原因**:\n",
    "- 数据录入重复\n",
    "- 系统bug导致重复提交\n",
    "- 多数据源合并时重复\n",
    "- ETL流程错误\n",
    "\n",
    "**影响**:\n",
    "- 统计指标失真\n",
    "- 模型训练偏差\n",
    "- 存储空间浪费\n",
    "\n",
    "**Excel对比**:\n",
    "- Excel: 数据→删除重复项(需手动选择列)\n",
    "- Pandas: `drop_duplicates()` 灵活指定"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "原始数据(含重复):\n",
      "  order_id customer product  amount        date\n",
      "0     O001       张三      手机    5999  2024-01-15\n",
      "1     O002       李四      电脑    8999  2024-01-16\n",
      "2     O003       王五      平板    3999  2024-01-17\n",
      "3     O002       李四      电脑    8999  2024-01-16\n",
      "4     O004       赵六      手机    5999  2024-01-18\n",
      "5     O001       张三      手机    5999  2024-01-15\n",
      "6     O005       钱七      耳机     899  2024-01-19\n",
      "\n",
      "数据总行数: 7\n"
     ]
    }
   ],
   "source": [
    "# 创建包含重复值的数据\n",
    "data_duplicates = {\n",
    "    'order_id': ['O001', 'O002', 'O003', 'O002', 'O004', 'O001', 'O005'],\n",
    "    'customer': ['张三', '李四', '王五', '李四', '赵六', '张三', '钱七'],\n",
    "    'product': ['手机', '电脑', '平板', '电脑', '手机', '手机', '耳机'],\n",
    "    'amount': [5999, 8999, 3999, 8999, 5999, 5999, 899],\n",
    "    'date': ['2024-01-15', '2024-01-16', '2024-01-17', '2024-01-16', '2024-01-18', '2024-01-15', '2024-01-19']\n",
    "}\n",
    "\n",
    "df_duplicates = pd.DataFrame(data_duplicates)\n",
    "\n",
    "print(\"原始数据(含重复):\")\n",
    "print(df_duplicates)\n",
    "\n",
    "print(f\"\\n数据总行数: {len(df_duplicates)}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "完全重复的行:\n",
      "  order_id customer product  amount        date\n",
      "0     O001       张三      手机    5999  2024-01-15\n",
      "5     O001       张三      手机    5999  2024-01-15\n",
      "1     O002       李四      电脑    8999  2024-01-16\n",
      "3     O002       李四      电脑    8999  2024-01-16\n",
      "\n",
      "完全重复记录数: 2\n"
     ]
    }
   ],
   "source": [
    "# 检测完全重复\n",
    "print(\"完全重复的行:\")\n",
    "fully_duplicated = df_duplicates[df_duplicates.duplicated(keep=False)]\n",
    "print(fully_duplicated.sort_values('order_id'))\n",
    "print(f\"\\n完全重复记录数: {df_duplicates.duplicated().sum()}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "基于订单ID的重复:\n",
      "  order_id customer product  amount        date\n",
      "0     O001       张三      手机    5999  2024-01-15\n",
      "5     O001       张三      手机    5999  2024-01-15\n",
      "1     O002       李四      电脑    8999  2024-01-16\n",
      "3     O002       李四      电脑    8999  2024-01-16\n",
      "\n",
      "订单ID重复数: 2\n"
     ]
    }
   ],
   "source": [
    "# 检测基于order_id的重复\n",
    "print(\"基于订单ID的重复:\")\n",
    "order_duplicated = df_duplicates[df_duplicates.duplicated(subset=['order_id'], keep=False)]\n",
    "print(order_duplicated.sort_values('order_id'))\n",
    "print(f\"\\n订单ID重复数: {df_duplicates.duplicated(subset=['order_id']).sum()}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "去重策略对比:\n",
      "\n",
      "策略1 - 保留第一条: 5行\n",
      "策略2 - 保留最后一条: 5行\n",
      "策略3 - 删除所有重复: 3行\n",
      "\n",
      "去重后数据(保留第一条):\n",
      "  order_id customer product  amount        date\n",
      "0     O001       张三      手机    5999  2024-01-15\n",
      "1     O002       李四      电脑    8999  2024-01-16\n",
      "2     O003       王五      平板    3999  2024-01-17\n",
      "4     O004       赵六      手机    5999  2024-01-18\n",
      "6     O005       钱七      耳机     899  2024-01-19\n"
     ]
    }
   ],
   "source": [
    "# 去重处理\n",
    "print(\"去重策略对比:\\n\")\n",
    "\n",
    "# 策略1: 保留第一条\n",
    "df_dedup_first = df_duplicates.drop_duplicates(subset=['order_id'], keep='first')\n",
    "print(f\"策略1 - 保留第一条: {len(df_dedup_first)}行\")\n",
    "\n",
    "# 策略2: 保留最后一条\n",
    "df_dedup_last = df_duplicates.drop_duplicates(subset=['order_id'], keep='last')\n",
    "print(f\"策略2 - 保留最后一条: {len(df_dedup_last)}行\")\n",
    "\n",
    "# 策略3: 删除所有重复\n",
    "df_dedup_none = df_duplicates.drop_duplicates(subset=['order_id'], keep=False)\n",
    "print(f\"策略3 - 删除所有重复: {len(df_dedup_none)}行\")\n",
    "\n",
    "print(\"\\n去重后数据(保留第一条):\")\n",
    "print(df_dedup_first)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4. 不一致值 (Inconsistent Data)\n",
    "\n",
    "**定义**: 相同含义的数据以不同格式或写法出现\n",
    "\n",
    "**常见情况**:\n",
    "- **大小写不一致**: `Beijing` vs `beijing` vs `BEIJING`\n",
    "- **格式不一致**: `2024-01-15` vs `2024/01/15` vs `15-Jan-2024`\n",
    "- **单位不一致**: `1000元` vs `1千元` vs `1K`\n",
    "- **空格问题**: `  张三  ` vs `张三`\n",
    "- **同义词**: `手机` vs `移动电话` vs `cellphone`\n",
    "- **缩写**: `北京市` vs `北京` vs `BJ`\n",
    "\n",
    "**影响**:\n",
    "- 分组统计错误\n",
    "- 匹配失败\n",
    "- 重复计数\n",
    "\n",
    "**Excel对比**:\n",
    "- Excel: 查找替换、分列、TRIM函数\n",
    "- Pandas: `str`方法、`replace()`、正则表达式"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "包含不一致值的数据:\n",
      "    product_name category         date   price   region\n",
      "0      iPhone 15       手机   2024-01-15   6999元      北京市\n",
      "1      iphone 15       手机   2024/01/15    6999       北京\n",
      "2      IPHONE 15     移动电话  15-Jan-2024   ¥6999  Beijing\n",
      "3       iPhone15    Phone   2024.01.15  6999.0       BJ\n",
      "4    iPhone 15         手机     20240115   6,999     北京  \n",
      "\n",
      "统计各列的唯一值数量:\n",
      "product_name: 5个唯一值\n",
      "category: 3个唯一值\n",
      "date: 5个唯一值\n",
      "price: 5个唯一值\n",
      "region: 5个唯一值\n"
     ]
    }
   ],
   "source": [
    "# 创建包含不一致值的数据\n",
    "data_inconsistent = {\n",
    "    'product_name': ['iPhone 15', 'iphone 15', 'IPHONE 15', 'iPhone15', '  iPhone 15  '],\n",
    "    'category': ['手机', '手机', '移动电话', 'Phone', '手机'],\n",
    "    'date': ['2024-01-15', '2024/01/15', '15-Jan-2024', '2024.01.15', '20240115'],\n",
    "    'price': ['6999元', '6999', '¥6999', '6999.0', '6,999'],\n",
    "    'region': ['北京市', '北京', 'Beijing', 'BJ', '  北京  ']\n",
    "}\n",
    "\n",
    "df_inconsistent = pd.DataFrame(data_inconsistent)\n",
    "\n",
    "print(\"包含不一致值的数据:\")\n",
    "print(df_inconsistent)\n",
    "\n",
    "print(\"\\n统计各列的唯一值数量:\")\n",
    "for col in df_inconsistent.columns:\n",
    "    print(f\"{col}: {df_inconsistent[col].nunique()}个唯一值\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "各列的所有唯一值:\n",
      "\n",
      "product_name:\n",
      "  ['iPhone 15' 'iphone 15' 'IPHONE 15' 'iPhone15' '  iPhone 15  ']\n",
      "\n",
      "category:\n",
      "  ['手机' '移动电话' 'Phone']\n",
      "\n",
      "date:\n",
      "  ['2024-01-15' '2024/01/15' '15-Jan-2024' '2024.01.15' '20240115']\n",
      "\n",
      "price:\n",
      "  ['6999元' '6999' '¥6999' '6999.0' '6,999']\n",
      "\n",
      "region:\n",
      "  ['北京市' '北京' 'Beijing' 'BJ' '  北京  ']\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# 查看每列的唯一值\n",
    "print(\"各列的所有唯一值:\\n\")\n",
    "for col in df_inconsistent.columns:\n",
    "    print(f\"{col}:\")\n",
    "    print(f\"  {df_inconsistent[col].unique()}\")\n",
    "    print()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "清洗后的数据:\n",
      "  product_name category        date   price region\n",
      "0     iphone15       手机  2024-01-15  6999.0     北京\n",
      "1     iphone15       手机  2024-01-15  6999.0     北京\n",
      "2     iphone15       手机  2024-01-15  6999.0     北京\n",
      "3     iphone15       手机  2024-01-15  6999.0     北京\n",
      "4     iphone15       手机  2024-01-15  6999.0     北京\n",
      "\n",
      "清洗后唯一值数量:\n",
      "product_name: 1个唯一值\n",
      "category: 1个唯一值\n",
      "date: 1个唯一值\n",
      "price: 1个唯一值\n",
      "region: 1个唯一值\n"
     ]
    }
   ],
   "source": [
    "# 清洗不一致值\n",
    "df_clean = df_inconsistent.copy()\n",
    "\n",
    "# 1. 产品名标准化: 统一大小写、去空格\n",
    "df_clean['product_name'] = df_clean['product_name'].str.strip().str.lower().str.replace(' ', '')\n",
    "\n",
    "# 2. 类别标准化: 统一为中文\n",
    "category_mapping = {\n",
    "    '移动电话': '手机',\n",
    "    'Phone': '手机',\n",
    "    'phone': '手机'\n",
    "}\n",
    "df_clean['category'] = df_clean['category'].replace(category_mapping)\n",
    "\n",
    "# 3. 日期标准化: 统一为YYYY-MM-DD格式\n",
    "# 这里简化处理，实际应使用pd.to_datetime()\n",
    "df_clean['date'] = '2024-01-15'  # 简化示例\n",
    "\n",
    "# 4. 价格标准化: 提取数字\n",
    "df_clean['price'] = df_clean['price'].str.replace('[^0-9.]', '', regex=True).astype(float)\n",
    "\n",
    "# 5. 地区标准化\n",
    "region_mapping = {\n",
    "    '北京市': '北京',\n",
    "    'Beijing': '北京',\n",
    "    'BJ': '北京',\n",
    "    '  北京  ': '北京'\n",
    "}\n",
    "df_clean['region'] = df_clean['region'].str.strip().replace(region_mapping)\n",
    "\n",
    "print(\"清洗后的数据:\")\n",
    "print(df_clean)\n",
    "\n",
    "print(\"\\n清洗后唯一值数量:\")\n",
    "for col in df_clean.columns:\n",
    "    print(f\"{col}: {df_clean[col].nunique()}个唯一值\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "\n",
    "## 三、数据质量检查清单\n",
    "\n",
    "### 拿到数据后的标准检查流程\n",
    "\n",
    "#### ✅ 第一步：整体概览\n",
    "```python\n",
    "df.head()        # 查看前几行\n",
    "df.info()        # 数据类型、缺失值\n",
    "df.shape         # 行列数\n",
    "df.columns       # 列名\n",
    "```\n",
    "\n",
    "#### ✅ 第二步：缺失值检查\n",
    "```python\n",
    "df.isnull().sum()                # 各列缺失数\n",
    "(df.isnull().sum() / len(df))   # 缺失占比\n",
    "```\n",
    "\n",
    "#### ✅ 第三步：重复值检查\n",
    "```python\n",
    "df.duplicated().sum()            # 完全重复数\n",
    "df.duplicated(subset=['id']).sum()  # 关键字段重复\n",
    "```\n",
    "\n",
    "#### ✅ 第四步：数据类型检查\n",
    "```python\n",
    "df.dtypes                        # 数据类型是否正确\n",
    "df.describe()                    # 数值列统计\n",
    "```\n",
    "\n",
    "#### ✅ 第五步：异常值检查\n",
    "```python\n",
    "df.describe()                    # 最大最小值是否合理\n",
    "df[col].value_counts()           # 频数分布\n",
    "```\n",
    "\n",
    "#### ✅ 第六步：一致性检查\n",
    "```python\n",
    "df[col].unique()                 # 唯一值是否存在不一致\n",
    "df[col].nunique()                # 唯一值数量是否合理\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "======================================================================\n",
      "数据质量检查报告 - 缺失值示例数据\n",
      "======================================================================\n",
      "\n",
      "【1. 基本信息】\n",
      "  · 数据规模: 5行 × 5列\n",
      "  · 内存占用: 0.00 MB\n",
      "\n",
      "【2. 缺失值检查】\n",
      "                 缺失数量  缺失占比(%)\n",
      "name                1     20.0\n",
      "age                 1     20.0\n",
      "city                1     20.0\n",
      "purchase_amount     1     20.0\n",
      "\n",
      "【3. 重复值检查】\n",
      "  · 完全重复行数: 0 (0.00%)\n",
      "\n",
      "【4. 数据类型】\n",
      "object     3\n",
      "float64    2\n",
      "Name: count, dtype: int64\n",
      "\n",
      "【5. 数值列检查】\n",
      "\n",
      "  age:\n",
      "    范围: [28.0, 42.0]\n",
      "    均值: 34.00, 中位数: 33.00\n",
      "\n",
      "  purchase_amount:\n",
      "    范围: [800.0, 3500.0]\n",
      "    均值: 1900.00, 中位数: 1650.00\n",
      "\n",
      "【6. 分类列唯一值】\n",
      "  · customer_id: 5个唯一值\n",
      "    → ['C001', 'C002', 'C003', 'C004', 'C005']\n",
      "  · name: 4个唯一值\n",
      "    → ['张三', '李四', None, '赵六', '王五']\n",
      "  · city: 4个唯一值\n",
      "    → ['北京', '上海', '广州', '深圳', None]\n",
      "\n",
      "======================================================================\n",
      "检查完成!\n",
      "======================================================================\n"
     ]
    }
   ],
   "source": [
    "# 完整的数据质量检查函数\n",
    "def data_quality_check(df, name=\"Dataset\"):\n",
    "    \"\"\"\n",
    "    全面的数据质量检查报告\n",
    "    \"\"\"\n",
    "    print(\"=\"*70)\n",
    "    print(f\"数据质量检查报告 - {name}\")\n",
    "    print(\"=\"*70)\n",
    "    \n",
    "    # 1. 基本信息\n",
    "    print(\"\\n【1. 基本信息】\")\n",
    "    print(f\"  · 数据规模: {df.shape[0]:,}行 × {df.shape[1]}列\")\n",
    "    print(f\"  · 内存占用: {df.memory_usage(deep=True).sum() / 1024 / 1024:.2f} MB\")\n",
    "    \n",
    "    # 2. 缺失值\n",
    "    print(\"\\n【2. 缺失值检查】\")\n",
    "    missing = df.isnull().sum()\n",
    "    missing_pct = (missing / len(df) * 100).round(2)\n",
    "    missing_df = pd.DataFrame({\n",
    "        '缺失数量': missing,\n",
    "        '缺失占比(%)': missing_pct\n",
    "    })\n",
    "    missing_df = missing_df[missing_df['缺失数量'] > 0].sort_values('缺失数量', ascending=False)\n",
    "    if len(missing_df) > 0:\n",
    "        print(missing_df)\n",
    "    else:\n",
    "        print(\"  ✓ 无缺失值\")\n",
    "    \n",
    "    # 3. 重复值\n",
    "    print(\"\\n【3. 重复值检查】\")\n",
    "    dup_count = df.duplicated().sum()\n",
    "    print(f\"  · 完全重复行数: {dup_count} ({dup_count/len(df)*100:.2f}%)\")\n",
    "    \n",
    "    # 4. 数据类型\n",
    "    print(\"\\n【4. 数据类型】\")\n",
    "    print(df.dtypes.value_counts())\n",
    "    \n",
    "    # 5. 数值列异常\n",
    "    print(\"\\n【5. 数值列检查】\")\n",
    "    numeric_cols = df.select_dtypes(include=[np.number]).columns\n",
    "    if len(numeric_cols) > 0:\n",
    "        for col in numeric_cols:\n",
    "            print(f\"\\n  {col}:\")\n",
    "            print(f\"    范围: [{df[col].min()}, {df[col].max()}]\")\n",
    "            print(f\"    均值: {df[col].mean():.2f}, 中位数: {df[col].median():.2f}\")\n",
    "            # 检查负数(如果不应该有)\n",
    "            if (df[col] < 0).any():\n",
    "                print(f\"    ⚠ 警告: 发现{(df[col] < 0).sum()}个负数值\")\n",
    "    \n",
    "    # 6. 分类列唯一值\n",
    "    print(\"\\n【6. 分类列唯一值】\")\n",
    "    categorical_cols = df.select_dtypes(include=['object']).columns\n",
    "    for col in categorical_cols:\n",
    "        nunique = df[col].nunique()\n",
    "        print(f\"  · {col}: {nunique}个唯一值\")\n",
    "        if nunique <= 10:  # 如果唯一值少于10个,显示出来\n",
    "            print(f\"    → {list(df[col].unique())}\")\n",
    "    \n",
    "    print(\"\\n\" + \"=\"*70)\n",
    "    print(\"检查完成!\")\n",
    "    print(\"=\"*70)\n",
    "\n",
    "# 测试检查函数\n",
    "data_quality_check(df_missing, \"缺失值示例数据\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "\n",
    "## 四、课堂练习\n",
    "\n",
    "### 练习1: 识别脏数据\n",
    "下面的数据包含所有四种脏数据类型,请识别并标注出来:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "练习数据:\n",
      "  student_id    name  age  score     city\n",
      "0       S001      张三   20   85.0       北京\n",
      "1       S002      李四   22   92.0  beijing\n",
      "2       S003    None   21   78.0       上海\n",
      "3       S002      李四   22   92.0       北京\n",
      "4       S004      王五   -5   88.0       广州\n",
      "5       S005    赵六     23    NaN  BEIJING\n",
      "\n",
      "请识别:\n",
      "1. 哪些是缺失值?\n",
      "2. 哪些是异常值?\n",
      "3. 哪些是重复值?\n",
      "4. 哪些是不一致值?\n"
     ]
    }
   ],
   "source": [
    "# 练习数据\n",
    "practice_data = {\n",
    "    'student_id': ['S001', 'S002', 'S003', 'S002', 'S004', 'S005'],\n",
    "    'name': ['张三', '李四', None, '李四', '王五', '  赵六  '],\n",
    "    'age': [20, 22, 21, 22, -5, 23],\n",
    "    'score': [85, 92, 78, 92, 88, None],\n",
    "    'city': ['北京', 'beijing', '上海', '北京', '广州', 'BEIJING']\n",
    "}\n",
    "\n",
    "df_practice = pd.DataFrame(practice_data)\n",
    "print(\"练习数据:\")\n",
    "print(df_practice)\n",
    "\n",
    "print(\"\\n请识别:\")\n",
    "print(\"1. 哪些是缺失值?\")\n",
    "print(\"2. 哪些是异常值?\")\n",
    "print(\"3. 哪些是重复值?\")\n",
    "print(\"4. 哪些是不一致值?\")\n",
    "\n",
    "# 答案在下方代码块"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 练习答案\n",
    "print(\"=== 练习答案 ===\")\n",
    "print(\"\\n1. 缺失值:\")\n",
    "print(\"  - name列: 第3行(索引2)\")\n",
    "print(\"  - score列: 第6行(索引5)\")\n",
    "\n",
    "print(\"\\n2. 异常值:\")\n",
    "print(\"  - age列: 第5行(索引4)的-5岁(年龄不能为负)\")\n",
    "\n",
    "print(\"\\n3. 重复值:\")\n",
    "print(\"  - student_id='S002'的学生记录重复(第2行和第4行)\")\n",
    "\n",
    "print(\"\\n4. 不一致值:\")\n",
    "print(\"  - city列: '北京', 'beijing', 'BEIJING'表示同一城市但写法不一致\")\n",
    "print(\"  - name列: '  赵六  '前后有空格\")\n",
    "\n",
    "# 使用检查函数验证\n",
    "data_quality_check(df_practice, \"练习数据\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "\n",
    "## 五、本讲总结\n",
    "\n",
    "### 核心要点\n",
    "\n",
    "1. **数据分析六步法**\n",
    "   - 问题定义 → 数据采集 → 数据准备 → 数据分析 → 可视化呈现 → 决策建议\n",
    "   - 数据准备占60-70%工作量\n",
    "\n",
    "2. **四大脏数据类型**\n",
    "   - 缺失值: `isnull()`, `fillna()`, `dropna()`\n",
    "   - 异常值: IQR法, 3σ法, 业务规则\n",
    "   - 重复值: `duplicated()`, `drop_duplicates()`\n",
    "   - 不一致值: `str`方法, `replace()`, 标准化\n",
    "\n",
    "3. **数据质量检查流程**\n",
    "   - 整体概览 → 缺失值 → 重复值 → 类型 → 异常值 → 一致性\n",
    "   - 建立检查清单,养成良好习惯\n",
    "\n",
    "### 与Excel对比\n",
    "\n",
    "| 任务 | Excel | Pandas |\n",
    "|------|-------|--------|\n",
    "| 查看数据 | 滚动浏览 | `head()`, `info()` |\n",
    "| 缺失值 | 手动查找空白 | `isnull().sum()` |\n",
    "| 去重 | 数据→删除重复项 | `drop_duplicates()` |\n",
    "| 异常值 | 排序+筛选 | `describe()`, IQR法 |\n",
    "| 数据量 | <100万行 | 千万级别 |\n",
    "| 自动化 | 录制宏 | Python脚本 |\n",
    "\n",
    "### 下节预告\n",
    "**第2讲: 数据准备与Pandas基础**\n",
    "- 数据读取与导出\n",
    "- DataFrame核心操作\n",
    "- 数据选择与过滤\n",
    "- 排序与索引\n",
    "\n",
    "---"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 课后作业\n",
    "\n",
    "### 作业1: 数据质量报告\n",
    "使用提供的销售数据,完成一份完整的数据质量检查报告,包含:\n",
    "1. 基本信息统计\n",
    "2. 四类脏数据识别\n",
    "3. 数据质量评分(优/良/中/差)\n",
    "4. 清洗建议\n",
    "\n",
    "### 作业2: 设计分析问题\n",
    "针对电商销售场景,设计3个具体的分析问题,要求:\n",
    "- 问题明确,可量化\n",
    "- 说明需要哪些数据\n",
    "- 预期的分析方法\n",
    "- 可能的业务价值\n",
    "\n",
    "### 作业3: 编写检查函数\n",
    "改进`data_quality_check()`函数,增加:\n",
    "- 异常值自动检测(IQR法)\n",
    "- 不一致值提示\n",
    "- 生成HTML格式报告\n",
    "- 数据质量评分"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python [conda env:base] *",
   "language": "python",
   "name": "conda-base-py"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.13.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
